JavaWeb19.2【Filter&Listener:过滤器Filter的执行流程和生命周期方法】
1 package com.haifei.web.filter; 2 3 import javax.servlet.*; 4 import javax.servlet.annotation.WebFilter; 5 import java.io.IOException; 6 7 /** 8 * 过滤器细节 之 过滤器执行流程 9 * 1. 执行过滤器 10 * 2. 执行放行后的资源 11 * 3. 回来执行过滤器放行代码下边的代码 12 */ 13 //@WebFilter("/*") 14 public class FilterDemo2 implements Filter { 15 public void destroy() { 16 } 17 18 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 19 20 //对request对象的请求消息增强 21 22 System.out.println("FilterDemo2..."); 23 24 chain.doFilter(req, resp); //IDEA"注解模式Filter"代码快速创建模板 自带放行语句 25 26 //对response对象的响应消息增强 27 28 System.out.println("FilterDemo2...回来了。。。"); 29 30 /* 31 http://localhost:8080/day19/index.jsp 32 33 FilterDemo2... 34 index.jsp 35 FilterDemo2...回来了。。。 36 */ 37 } 38 39 public void init(FilterConfig config) throws ServletException { 40 41 } 42 43 }
1 <%-- 2 Created by IntelliJ IDEA. 3 User: yubaby 4 Date: 2021/7/4 5 Time: 21:35 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>$Title$</title> 12 </head> 13 <body> 14 index.jsp 15 16 <% 17 System.out.println("index.jsp"); 18 %> 19 </body> 20 </html>
1 package com.haifei.web.filter; 2 3 import javax.servlet.*; 4 import javax.servlet.annotation.WebFilter; 5 import java.io.IOException; 6 7 /** 8 * 过滤器细节 之 过滤器生命周期方法 9 */ 10 //@WebFilter("/*") 11 public class FilterDemo3 implements Filter { 12 13 /** 14 * 每一次请求被拦截资源时,会执行。执行多次 15 * @param req 16 * @param resp 17 * @param chain 18 * @throws ServletException 19 * @throws IOException 20 */ 21 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 22 System.out.println("doFilter...."); 23 chain.doFilter(req, resp); 24 } 25 26 /** 27 * 在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源 28 * @param config 29 * @throws ServletException 30 */ 31 public void init(FilterConfig config) throws ServletException { 32 System.out.println("init...."); 33 } 34 35 /** 36 * 在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源 37 */ 38 public void destroy() { 39 System.out.println("destroy...."); 40 } 41 42 }