servlet进行权限控制及排除指定方法

在java web开发过程中,我们需要对其进行权限的控制,下面介绍一下sevrvlet进行权限的控制。

[size=medium]配置一个servlet拦截器Filter

1.写一个Filter类需要实现servlet Filter方法如代码

public class LoginFilter implements Filter{

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
			
		HttpServletResponse resp = (HttpServletResponse)response;
		HttpServletRequest req = (HttpServletRequest)request;
		
		System.out.println(req.getRequestURL());
		String requestURL = req.getRequestURL().toString();
		String requestName = requestURL.substring(requestURL.lastIndexOf("/")+1);
		System.out.println(requestName);

		//拦截地址中login.html及以.js和.css结尾的请求地址
	if(requestName.equals("login.html")||requestName.matches(".*\\.js$")||requestName.matches(".*\\.css$")){
			System.out.println(requestName);
			//跳到下一步请求
			chain.doFilter(request, response);
			return;
		}
		
		HttpSession session = req.getSession(true);
		
		String username =  (String) session.getAttribute("username");
		if(username == null||"".equals(username)){
			resp.sendRedirect("/cookies/login.html");
		}else {
			chain.doFilter(request,response);
		}
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

}



注意:在这个类中,可以看到:
//拦截地址中login.html及以.js和.css结尾的请求地址
	if(requestName.equals("login.html")||requestName.matches(".*\\.js$")||requestName.matches(".*\\.css$")){
			System.out.println(requestName);
			//跳到下一步请求
			chain.doFilter(request, response);
			return;
		}

我们可以拦截一些你想另外处理的请求,这里我拦截了login.html及以.js和.css(正则表达式)结尾的请求地址,不对其进行处理(chain.doFilter(request, response);)直接跳到下一个链。

chain.doFilter(request, response),可以参考http://blog.csdn.net/huangcongjie/article/details/7377422

2.filter写好之后,在web.xml中进行配置:
	<filter>
		<filter-name>/filter</filter-name>
		<filter-class>org.guess.filter.LoginFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>/filter</filter-name>
		<url-pattern>*</url-pattern>
	</filter-mapping>

<url-pattern>*</url-pattern>配置可参考http://ghsea.iteye.com/blog/181485

这里我通过<url-pattern>*</url-pattern>把所有的请求(包括webservice的服务)都拦截到了这个拦截器里面,当然你也可以更灵活的配置。

以上就完成了,servlet的一个简单的拦截器的配置


语言组织能力有待加强!!!

你可能感兴趣的:(java,Web,servlet)