过滤器Filter 实现 用户登录的过滤

ps:因为这个过滤器的存在,在登陆之前所有的资源都不能访问。 所以在login.jsp上如果有图片,js和css,也不能够正常显示和工作。
可以在过滤器上配置:比如验证码

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		 HttpServletRequest request = (HttpServletRequest)req ;
	        HttpServletResponse response= (HttpServletResponse)res;
	        //URI得到的是:/date5_13/login.jsp
	        String uri = request.getRequestURI();
	       /* 	不建议使用URL
	        URL得到的是:http://localhost:8080/date5_13/login.jsp   
	         StringBuffer  u =request.getRequestURL();
	        login.jsp登录界面      StudentServlet 为请求的servlet   Img 为验证码*/
	        if(uri.endsWith("login.jsp")||uri.endsWith("StudentServlet")||uri.endsWith("Img")) {
	        	chain.doFilter(request, response);
	        	//指定在客户端请求消息之间servlet容器将该会话设为无效之前的以秒计的时间。30秒不操作就会情况session
	        	request.getSession().setMaxInactiveInterval(30);
	        	return;
	        }
	        String name = (String) request.getSession().getAttribute("name");
	        if(name==null) {
	        	response.sendRedirect("login.jsp");
	        	return;
	        }
	        chain.doFilter(request, response);
	}

在配置一下web.xml


    LoginFilter
    wzf.myfilter.LoginFilter
  
  
    LoginFilter
    /*
  

这样应该可以了!
ps:设计中,如果有退出的方式,也应该清楚session
request.getSession().setMaxInactiveInterval(0);
谢谢大家支持!下次再发改进的!

你可能感兴趣的:(JSP,Filter)