首页常见问题正文

Filter如何拦截请求? 【Servlet高级】

更新时间:2023-01-09 来源:黑马程序员 浏览量:

IT培训班

  在一个Web应用程序中可以注册多个Filter程序,每个Filter程序都可以针对某一个URL进行拦截。如果多个Filter程序都对同一个URL进行拦截,那么这些Filter就会组成一个Filter链(也称过滤器链)。Filter链用FilterChain对象中有一个doFilter()方法,该方法的作用是让Filter链上的当前过滤器放行,使请求进入下一个Filter。

  Filter链的拦截过程如图14-6所示。

1673228883192_Filter链.jpg

  图14-6 Filter链

  在图14-6中,当浏览器访问Web服务器中的资源时,需要经过两个过滤器Filter1和Filter2。首先Filter1会对这个请求进行拦截,在Filter1中处理完请求后,通过调用Filter1的doFilter()方法将请求传递给Filter2,Filter2处理用户请求后同样调用doFilter()方法,最终将请求发送给目标资源。当Web服务器对这个请求做出响应时,也会被过滤器拦截,但这个拦截顺序与之前相反,最终将响应结果发送给客户端浏览器。

1673229891627_领取课程.jpg

分享到:
在线咨询 我要报名
和我们在线交谈!