现有一工程下面有两个文件夹admin,user现欲用Filter来实现登陆时的过滤功能(即:当session.userrole=admin时可进入所有文件夹,当session.userrole=user时只可进入user)请问:主要做哪几个方面的事情?请提供具体代码,谢谢!
注:分数全部给提供正确代码的

解决方案 »

  1.   

    先写个admin的过滤器public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {HttpServletRequest req=(HttpServletRequest )request;
    HttpServletResponse res=(HttpServletResponse )response;
    HttpSession session=req.getSession(true);
    String userrole="";
    if(session.getAttribute("USER_ID")!=null)
    {
     userrole=(String)session.getAttribute("userrole");}if(userrole.equals("") || userrole==null)
    {
    req.getRequestDispatcher("wrong.jsp").forward(req, res); 判断为空
    chain.doFilter(request,response);
    }
    else
    {
    chain.doFilter(request,response);
    }}在web.xml里
    <filter>
      <filter-name>admin</filter-name>
      <filter-class>你类的路径</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>admin</filter-name>
      <url-pattern>/*</url-pattern>  /*是所有文件
    </filter-mapping>user的过滤器照着写在web.xml里
    <filter>
      <filter-name>user</filter-name>
      <filter-class>你类的路径</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>user</filter-name>
      <url-pattern>/user/*</url-pattern>  user下的文件
    </filter-mapping>
      

  2.   

    晕 还要写两个啊?一个过滤器可以实现吗?
    就写类和配置web.xml就可以了吗?还要在登陆页面里调用吗?
      

  3.   

    写一个过滤器应该是可以实现的:取得你的路径中的关键字与userrole比较
    给你段代码参考下:
    String uri=request.getRequestURI();
    String[] path=uri.split("/");
    //取得路径的关键字,下面的path[1]就是你的文件夹名,你的里面也许是用path[2],path[3]
    if (session.getAttribute(Constant.SESSION_USER_ROLE).equalsIgnoreCase(path[1].trim())) {
        filterchain.doFilter(arg0, arg1);
    }