0
点赞
收藏
分享

微信扫一扫

Javaweb知识篇之什么是Filter?


在web开发过程中,为了实现某些特殊功能,经常需要对请求和响应消息进行处理。例如,记录用户访问信息,统计页面访问次数,验证用户身份等。Filter作为Servlet2.3中新增的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行相关处理,接下来学习:到底什么是Filter。

Filter被称作为过滤器或者拦截器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。这就好比现实中的污水净化设备,它可以看作一个过滤器,专门用于过滤污水杂志。下图就描述了Filter在web应用中的拦截过程,具体如下:

Javaweb知识篇之什么是Filter?_Javaweb

在图中,当浏览器访问服务器中的目标资源时,会被Filter拦截,在Filter中进行预处理操作,然后再将请求转发给目标资源。当服务器接收到这个请求后会对其进行响应,在服务器处理响应的过程中,也需要先将响应结果发送给拦截器,在拦截器中对响应结果进行处理后,才会发送给客户端。

其实,Filter过滤器就是一个实现了Javax.servlet.Filter接口的类,在javax.servlet.Filter接口中定义了三个方法,具体如图所示:

Javaweb知识篇之什么是Filter?_程序员_02

在图中的三个方法都是Filter的生命周期方法,其中,int()方法在WEB应用程序加载的时候调用,destroy()方法在web应用程序卸载的时候调用,这两个方法都只会被调用一次,而doFilter()方法只要有客户端请求时就会被调用,并且Filter所有的工作集中在doFilter()方法中。

 

原文来源于书籍:《Javaweb程序开发进阶》

举报

相关推荐

0 条评论