实现一个Filter接口
init()、destroy()原理、执行时间 同Servlet
配置过滤器
有小红叉将“http://www.springmodules.org/schema/cache/springmodules-cache.xsd
http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd”这段话加入到xml文件的"xmlns:xsi="的标签中
通过doFilter()处理拦截,并通过chain.doFilter(request,response);放行
filter映射
只拦截 访问MyServlet的请求
<url-pattern>/MyServlet</url-pattern>
拦截一切请求(每一次访问 都会被拦截)
<url-pattern>/*</url-pattern>
通配符
dispatcher请求方式:
REQUEST:拦截HTTP请求 get psot
FORWARD:只拦截 通过 请求转发方式的请求
INCLUDE:只拦截 拦截通过 request.getRequestDispatcher("").include()、通过<jsp:include page="…"/>
ERROR:只拦截发出的请求
在过滤器中doFilter方法参数:ServletRequest
在Servlet中的方法参数:HttpServletRequest
过滤器链
可以配置多个过滤器,过滤器的先后顺序是由<filter-mapping>的位置决定的。
哪个filter-mapping在前面哪个就是第一个过滤器
<!-- 配置过滤器 -->
<filter>
<filter-name>MyServlet</filter-name>
<filter-class>org.student.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyServlet</filter-name>
<!-- <url-pattern>/MyServlet</url-pattern> -->
<url-pattern>/*</url-pattern><!-- 拦截所有请求 -->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter>
<filter-name>MyServlet2</filter-name>
<filter-class>org.student.filter.MyFilter2</filter-class>
</filter>
<filter-mapping>
<filter-name>MyServlet2</filter-name>
<url-pattern>/*</url-pattern><!-- 拦截所有请求 -->
</filter-mapping>
拦截请求....
拦截请求222....
拦截响应222....
拦截响应....