webroot
    img
        1.img
    js
        1.js
    css
        1.css
    manager
        manager.jsp
    login.jsp
    1.jsp
    2.jsp
大体结构是这样登陆界面login.jsp(随时可以进去,包含1.img,1.js,1.css)
1.jsp 2.jsp manager.jsp必须login.jsp登陆后才能进去,登陆成功设置了session
怎么写这个filter

解决方案 »

  1.   

    web.xml中: <filter>
    <filter-name>loginCheck</filter-name>
    <filter-class>com.LoginCheckFilter</filter-class>

    <init-param>
        <param-name>loginJsp</param-name>
        <param-value>/login.jsp</param-value>
    </init-param>

    </filter>
    <filter-mapping>
    <filter-name>loginCheck</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    public class LoginCheckFilter
        extends HttpServlet
        implements Filter {
     private String loginJsp;
    public void init(FilterConfig filterConfig) throws ServletException {
    this.loginJsp = this.filterConfig.getInitParameter("loginJsp");}
    public void doFilter(ServletRequest request, ServletResponse response,
                           FilterChain filterChain) {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;    
        String requestURI = req.getRequestURI();
        
        
        try {
        
         LoginUser webUser=(LoginUser)req.getSession().getAttribute(Constant.LOGIN_USER);
    //     log.info("请求的url:" + requestURI +"==webUser=="+webUser);
           if(webUser == null){
        
         if (
    !requestURI.endsWith(this.loginJsp)      ) {
         log.info("请求的url:" + requestURI + "用户未通过验证时的URL:" + noLoginURL);
        
                 req.getRequestDispatcher(loginJsp).forward(req, res);
                 return;
         }
            
           }      filterChain.doFilter(request, response);
        }
        catch (ServletException sx) {
          filterConfig.getServletContext().log(sx.getMessage());
        }
        catch (IOException iox) {
          filterConfig.getServletContext().log(iox.getMessage());
        }
        finally {
        }
      }  public void destroy() {
      }
    }
      

  2.   

    楼上的,我试了,但是js之类的文件在login.jsp中根本就显示不出来
      

  3.   

    你这里又没过滤*.js,为什么显示不出来。
    js之类的文件在login.jsp中根本就显示不出来?不加过滤器能显示吗?
      

  4.   

    <script type="text/javascript" src="<%=request.getContextPath() %>/js/xxx.js"></script>