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的实例对象。

猜你喜欢

转载自www.cnblogs.com/Teay/p/10604686.html