Filter细节web.xml配置方式和Filter细节执行流程&生命周期
Filter细节web.xml配置方式
注解进行注释表示这个类不是拦截器
web,xml标识此类为拦截器
<filter> <filter-name>filter</filter-name> <filter-class>com.peng.filter.filterwq.filterD1</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <!--拦截路径--> <url-pattern>/*</url-pattern> </filter-mapping>
就可以进行拦截
Filter细节执行流程&生命周期
过滤器执行流程
1. 执行过滤器
2. 执行放行后的资源
3. 回来执行过滤器放行代码下边的代码
index,jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>首页</title> </head> <body> <% System.out.println("index...."); %> </body> </html>
FilterD2:
@WebFilter("/*")
public class FilterD2 implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//对request对象请求消息增强
System.out.println("FilterD2执行....");
//放行
chain.doFilter(req, resp);
//对response对象请求消息增强
System.out.println("FilterD2回来了....");
}
public void init(FilterConfig config) throws ServletException {
}
}
生命周期
过滤器生命周期方法:
init:在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次(用于加载资源)
destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法,只执行一次(释放资源)
doFilter:每一次请求被拦截资源时,会执行多次
@WebFilter("/*") public class FilterD3 implements Filter { /* 在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法,只执行一次(释放资源) */ public void destroy() { System.out.println("destroy...."); } /** * 每一次请求被拦截资源时,会执行多次 */ public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println("doFilter...."); chain.doFilter(req, resp); } /** * 在服务器启动后,会创建Filter对象,然后调用init方法,只执行一次(用于加载资源) */ public void init(FilterConfig config) throws ServletException { System.out.println("init..."); } }