</filter-mapping>


FilterChain的doFilter方法:

代码实现

过滤器放行执行过程:

为什么要学习生命周期?
(servlet,只有知道servlet是在什么时候创建和什么时候销毁,才能知道,我在什么时候可以使用servlet)
我需要知道servlet存活的时间,才能正确的使用servlet对象。
对于过滤器,我们同样要知道,过滤器什么时候被创建,什么时候被销毁,我们才能正确的使用过滤器。
回顾servlet的生命周期:
创建: 第一次被访问的时候
销毁: 服务器关闭的时候,或者当前项目从服务器中移除
回顾session的生命周期:
创建: 第一次调用getsession方法
销毁: 服务器非正常关闭,超过生存时间,调用销毁(自杀)的方法
Filter:
创建:在服务器启动的时候
服务器启动截图:

销毁: 在服务器关闭的时候,过滤器销毁。
服务器关闭截图:

servletConfig对象:获取servlet相关的配置信息。
FilterConfig定义:获取filter相关的配置信息。

API介绍:

API代码演示:
1)设置过滤器初始化参数
2)通过filterconfig对象来获取参数

参数配置:

效果演示:

同学提问:filter是不是单例的?
测试单例的思路:
如果前一次请求操作的结果,影响后一次请求获取到的成员变量,那么filter就是单例的,反之,不是单例。
过滤器如何匹配请求的路径?
回顾servlet的url-pattern:
全路径匹配——
地址栏:localhost:8080/项目根路径/资源路径 localhost:8080/itcast-filter2/1.txt
通配符的匹配——
地址栏:localhost:8080/项目根路径/abc/*
以上两种匹配方式,配置路径的时候必须以"/"开头

后缀名匹配——/路径/*.do: *.do *.txt *.action
地址栏:localhost:8080/项目根路径/*.txt
后缀名匹配方式,配置路径的时候不能以"/"开头
Filter的url-pattern配置与servlet一致。
过滤器的执行顺序?
测试方式:
总结:
过滤器执行的顺序是按照,web.xml中filter-mapping标签的书写顺序执行(从上往下执行)
什么是servlet-name配置?
定义:针对指定的servlet进行拦截或者增强操作的配置
Servlet:
package cn.itcast.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
publicclassDemoServletextends HttpServlet {
publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("DemoServlet.....执行.......");
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-47577-2.html
台湾的民进党是汉奸党