一、概念

javaweb三大组件:Servlet、filter、listener。

  • Servlet

    1. 是一种运行于服务器端的java应用程序,可以用来处理请求和响应。
  • filter

过滤器,不像servlet,它不能产生一个请求或者响应,它是一个中间者,能修改处理经过它的请求和响应,别如登录的权限,不能直接给客户端响应。
Filter 过滤器它的作用是:拦截请求,过滤响应。

  • listener

    1. 监听器,用来监听容器内的一些变化,比如session的创建、销毁等,当变化产生的时候,监听器就要完成一些工作。

二、生命周期

Filter 的生命周期包含几个方法

  1. 构造器方法
  2. init() - 初始化方法
    第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建)
  3. doFilter() - 过滤方法

第 3 步,每次拦截到请求,就会执行(访问 admin 目录下的 a.jsp 页面,访问一次,拦截一次请求)
4.destroy() - 销毁
第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)

三、Filter 过滤器的使用步骤

  1. 编写一个java类,实现Filter接口,并实现其中的所有方法
  2. 在web.xml文件中配置Filter
  1. <!-- 过滤器配置 -->
  2. <filter>
  3. <!-- 内部名称 -->
  4. <filter-name>HelloFilter</filter-name>
  5. <!-- 类全名:包+简单类名 -->
  6. <filter-class>org.newboy.filter.HelloFilter</filter-class>
  7. </filter>
  8. <!-- 过滤器映射配置 -->
  9. <filter-mapping>
  10. <!-- 内部名称名称,和上面的名称保持一致! -->
  11. <filter-name>HelloFilter</filter-name>
  12. <!-- 需要拦截的路径 -->
  13. <url-pattern>/*</url-pattern>
  14. </filter-mapping>
  1. 把Filter部署到tomcat服务器运行

四、过滤器链

什么是过滤器链?

在一个Web程序中,如果存在多个过滤器过滤同一个Web资源,这些过滤器按前后顺序就组成了一个过滤器链。

五、过滤器的执行顺序