zoukankan      html  css  js  c++  java
  • 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的实例对象。
  • 相关阅读:
    51nod1179【思维】
    网络时间校准
    获取网络时间,减轻自己服务器的请求压力
    C# async/await异步编程深入理解
    C#中的异步编程--探索await与async关键字的奥妙之处,原来理解和使用异步编程可以这么简单
    "",string.Empty和null三者的区别
    三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富
    C# await async Task
    C#异步编程 Task await的理解
    idea中更改下载源
  • 原文地址:https://www.cnblogs.com/Teay/p/10604686.html
Copyright © 2011-2022 走看看