继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Filter中chain.doFilter(request,response)的理解

Uauslman
关注TA
已关注
手记 4
粉丝 2
获赞 75

对于一个新手概念很难理解,在敲代码的过程中对chain.doFilter()有了新的理解。
原来一直不清楚doFilter()有疑问:“传递到下一个Filter。”但是如果没有下一个过滤器那它起什么作用呢?今天终于搞明白了,在没有新的filter的情况下,doFilter()返回当前的请求(也就是你在地址栏输入的地址)。上代码:
通过判断条件,Filter过滤谁(那个网页)在没有下个Filter的情况下最后就返回所过滤的网页。

`public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("我是快乐的测试");
        HttpServletRequest req=(HttpServletRequest)request;
        HttpServletResponse res=(HttpServletResponse)response;
        HttpSession session=req.getSession();
        String st=config.getInitParameter("checkjsp");
        String charset = config.getInitParameter("charset");
        if(charset==null){
            charset = "UTF-8";
        }
        request.setCharacterEncoding(charset);
        if(st!=null){

            System.out.println("我是快乐的测试1");
            String[] c=st.split(";");
            for(int i=0;i<c.length;i++){
                if(c[i]==null||" ".equals(c[i])) continue;
                if(req.getRequestURL().indexOf(c[i])!=-1){
                    chain.doFilter(request, response);
                    System.out.println(req.getRequestURL()+"结束本方法");
                    return;
                }
            }
            System.out.println("我是快乐的测试34567");
        }
        if(session.getAttribute("username")!=null){
            System.out.println("我是快乐的测试345");
            chain.doFilter(request, response);
        }else{
            System.out.println(request.getParameter("username"));
            System.out.println(session.getAttribute("username"));
            System.out.println("我是快乐的测试347");
            res.sendRedirect("LogIn.jsp");
        }

    }
打开App,阅读手记
3人推荐
发表评论
随时随地看视频慕课网APP