在web.xml中配置了如下的filter:
<filter> <filter-name>LoginFilter</filter-name> <filter-class>user.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/main/*.html</url-pattern> </filter-mapping>
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws ServletException, IOException { System.out.println("filter======doFilter"); //进行用户是否登录的验证 HttpServletRequest request=(HttpServletRequest)servletRequest; HttpServletResponse response =(HttpServletResponse) servletResponse; HttpSession session = request.getSession(true); String user_name = (String)session.getAttribute("name");//登录人角色 String user_password = (String)session.getAttribute("password"); String url=request.getRequestURI(); if(user_name==null || "".equals(user_password) || user_password == null || "".equals(user_name)) { if(url!=null && !url.equals("") ) { response.sendRedirect(request.getContextPath() + "/login/login.html"); return; } } filterChain.doFilter(servletRequest, servletResponse);//再次转发请求 return; }如果用户没登录,则会出现循环跳转。为此,可以将登录页面和其他页面分开成两个文件夹,这个filter只过滤其中一个就可以了