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...");
    }

}

 

 

 

 

 

posted @ 2022-08-18 11:06  魔光领域  阅读(338)  评论(0编辑  收藏  举报