JavaWeb课程系列

3.3 filter放行请求

         我们发现,刚才的filter配置好后,index.jsp页面没法访问了,访问这个页面的时候filter        的dofilter方法被调用了。说明dofilter这个方法拦截了我们的请求。

         我们如何显示页面呢。也就是如何将请求放行呢。我们观察发现有个filterChain被传入  到这个方法里面了。filterChain里面有个doFilter()方法。

         放行请求只需要调用filterChain的dofilter方法。

         public void doFilter(ServletRequest request, ServletResponse response,

                            FilterChain chain) throws IOException, ServletException {

                   System.out.println("dofilter方法");

                   chain.doFilter(request, response);//放行请求

         }

 

3.4 filter拦截原理

         我们在chain.doFilter(request, response);方法后也写一句话,System.out.println

         (“doFilter方法执行后…”),在index.jsp页面也写上jsp脚本片段,输出我是jsp页面。运  行程序发现控制台输出了这几句话:

         dofilter方法…

         我是jsp页面

         dofilter方法后…

         我们不难发现filter的运行流程

4.FilterChain

doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

在doFilter执行之前,由容器将filterChain对象传入方法。调用此对象的.doFilter()方法可以将请求放行,实际上是执行过滤器链中的下一个doFilter方法,但是如果只有一个过滤器,则为放行。