一、概念
javaweb三大组件:Servlet、filter、listener。
Servlet
是一种运行于服务器端的java应用程序,可以用来处理请求和响应。
filter
过滤器,不像servlet,它不能产生一个请求或者响应,它是一个中间者,能修改处理经过它的请求和响应,别如登录的权限,不能直接给客户端响应。
Filter 过滤器它的作用是:拦截请求,过滤响应。
listener
监听器,用来监听容器内的一些变化,比如session的创建、销毁等,当变化产生的时候,监听器就要完成一些工作。
二、生命周期
Filter 的生命周期包含几个方法
- 构造器方法
- init() - 初始化方法
第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建) - doFilter() - 过滤方法
第 3 步,每次拦截到请求,就会执行(访问 admin 目录下的 a.jsp 页面,访问一次,拦截一次请求)
4.destroy() - 销毁
第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)
三、Filter 过滤器的使用步骤
- 编写一个java类,实现Filter接口,并实现其中的所有方法
- 在web.xml文件中配置Filter
<!-- 过滤器配置 -->
<filter>
<!-- 内部名称 -->
<filter-name>HelloFilter</filter-name>
<!-- 类全名:包+简单类名 -->
<filter-class>org.newboy.filter.HelloFilter</filter-class>
</filter>
<!-- 过滤器映射配置 -->
<filter-mapping>
<!-- 内部名称名称,和上面的名称保持一致! -->
<filter-name>HelloFilter</filter-name>
<!-- 需要拦截的路径 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
- 把Filter部署到tomcat服务器运行
四、过滤器链
什么是过滤器链?
在一个Web程序中,如果存在多个过滤器过滤同一个Web资源,这些过滤器按前后顺序就组成了一个过滤器链。