用户登陆时候如何过滤jsp也面,只让他访问固定那个页面public class CharacterEncodingFilter extends HttpServlet implements Filter {
    private FilterConfig filterConfig;
    //Handle the passed-in FilterConfig
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }    //Process the request/response pair
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain filterChain) {
        try {
          
             request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            Operator operator = (Operator) request.getAttribute("user");
            HttpServletRequest hrequest = (HttpServletRequest)request;
            HttpServletResponse hresponse=(HttpServletResponse)response;
            if(operator==null){
             //request.getRequestDispatcher("/netSign/login.jsp").forward(hrequest,hresponse); 此方法不好使
             //hresponse.sendRedirect("/WEB-INF/administrator/login.jsp");此方法不好使            }else{
             filterChain.doFilter(hrequest, hresponse);
            }
            
        }  catch (Exception e) {
            filterConfig.getServletContext().log(e.getMessage());
        }
    }

解决方案 »

  1.   


    import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;public class StudentAuthorityFilter implements Filter {
    /*
     * (non-Javadoc)
     * @see javax.servlet.Filter#destroy()
     */
    public void destroy() {
    }
    /*
     * (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    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);
            //从session里取得用户名的身份
            String username = (String)session.getAttribute("username");
            //若没有取得用户信息或不符合角色权限则跳转到登陆界面
            if("".equals(username) || username == null){
             //跳转到登陆界面
                res.sendRedirect("/TSIMS/NoAuthority.jsp");         }else{
             if(!"10".equals(username.substring(0,2)))
              {
           res.sendRedirect("/TSIMS/NoAuthority.jsp");
            }else{
        //已经登陆,继续此次请求
               chain.doFilter(request,response);
          }   
            }  
    }
    /*
     * (non-Javadoc)
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    public void init(FilterConfig config) throws ServletException {
    }
    }这是我以前做练习时写的一个过滤器,用来过滤登录权限的。。
      

  2.   

    String username = (String)session.getAttribute("username");无法获取参数
      

  3.   

    Struts 2 最著名的就是 Interceptor,你可以试试
      

  4.   

    这个就是一个Filter过滤器呀没什么呀!!!LZ去看看书或去查查过滤器相关资料吧
      

  5.   

     public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain filterChain) {
            try {
                //request.setCharacterEncoding("GBK");
                //response.setCharacterEncoding("GBK");            request.setCharacterEncoding("utf-8");
                response.setCharacterEncoding("utf-8");
                
                HttpServletRequest hrequest = (HttpServletRequest)request;
                HttpServletResponse hresponse=(HttpServletResponse)response;
                Operator operator = (Operator)hrequest.getSession().getAttribute("user");
                String req_para=hrequest.getQueryString();
               // String userName=(String) hrequest.getSession().getAttribute("operator.name");
        //        String userName=(String) hrequest.getSession().getServletContext().getAttribute("")
          
               
               RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
               try{
                System.out.println(operator.getRealname()+"+++++++++++++++++++++++++++++");
                filterChain.doFilter(hrequest, hresponse);
               }
               catch (Exception e) {
              
                System.out.println("+++++++++++++++11++++++++++++++"); 
                dispatcher.forward(hrequest, hresponse);
    }        }  catch (Exception iox) {
                filterConfig.getServletContext().log(iox.getMessage());
            }
        }web.xml 这样
    <filter>
        <filter-name>characterencodingfilter</filter-name>
        <filter-class>com.zwhd.filter.CharacterEncodingFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>characterencodingfilter</filter-name>
        <url-pattern>/administrator/*</url-pattern>
      </filter-mapping>
      
    调用的jsp放到administrator包外边
    搞定