Filter介绍
Filter(过滤器),在Servlet文档中是这样描述的:
‘A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.
Filters perform filtering in the doFilter
method. Every Filter has access to a FilterConfig object from which it can obtain its initialization parameters, a reference to the ServletContext which it can use, for example, to load resources needed for filtering tasks.
Filters are configured in the deployment descriptor of a web application’
- 过滤器是对资源请求(servlet或静态内容)或资源响应(或两者)执行过滤任务的对象。
- 过滤器在doFilter方法中执行过滤。每个Filter都可以访问FilterConfig对象,从该对象可以获取其初始化参数,例如,可以使用ServletContext的引用,以加载过滤任务所需的资源。
- 过滤器在Web应用程序的部署描述符中配置。
作用:
他的作用就是过滤作用,对客户端发送的请求进行过滤,也可以对服务器返回的响应进行处理。使用户改变一个request和修改一个response。Filter 不是一个servlet,它不能产生一个response,但是它能够在一个request到达servlet之前预处理request,也可以在 response离开servlet时处理response。换句话说,filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。
场合:
用于实现URL级别的权限访问限制,以及过滤敏感词汇,压缩响应信息等。
实现方式:
当客户端发生请求后,在HttpServletRequest到达Servlet之前,过滤器拦截客户的 HttpServletRequest。
根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
在过滤器中调用doFilter方法,对请求放行。请求到达Servlet后,对请求进行处理并产生HttpServletResponse发送给客户端。
在HttpServletResponse 到达客户端之前,过滤器拦截HttpServletResponse 。
根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。
最后,HttpServletResponse到达客户端。
生命周期 :
(1)Filter接口中有三个重要的方法。
- init()方法:初始化参数,在创建Filter时自动调用。当我们需要设置初始化参数的时候,可以写到该方法中。
- doFilter()方法:拦截到要执行的请求时,doFilter就会执行。这里面写我们对请求和响应的预处理。
- destroy()方法:在销毁Filter时自动调用。
(2)Filter的生命周期
Filter的创建和销毁由web服务器控制。
- 服务器启动的时候,web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。
- 拦截到请求时,执行doFilter方法。可以执行多次。
- 服务器关闭时,web服务器销毁Filter的实例对象。