Filter_细节_web.xml配置方式与Filter_细节_执行流程&生命周期

Filter_细节_web.xml配置方式

      过滤细节:

           1.web.xml配置

  

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
        <filter>
            <filter-name>demo1</filter-name>
            <filter-class>hf.xueqiang.filter.FilterDemo1</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>demo1</filter-name>
            <!--拦截路径-->
            <url-pattern>/*</url-pattern>
        </filter-mapping>

</web-app>

 

 

 

 

 

         2.过滤器的执行流程

         3.过滤器的生命周期方法

         4.过滤器配置详解

         5.过滤器链(配置 多个过滤器)     

Filter_细节_执行流程&生命周期

       过滤细节:

           1.web.xml配置

         2.过滤器的执行流程


              1. 执行过滤器
              2. 执行放行后的资源
              3. 回来执行过滤器放行代码下边的代码

 

 

package hf.xueqiang.filter;

import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebFilter("/*")
public class FilterDemo2 implements Filter {


    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        //对request对象请求消息增强
        System.out.println("FilterDemo2执行了........");
        
        //放行
        chain.doFilter(request, response);
        //对response对象的响应消息增强
        System.out.println("FilterDemo2回来了..........");
    }

    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }


}

 

         3.过滤器的生命周期方法

              1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
              2. doFilter:每一次请求被拦截资源时,会执行。执行多次
              3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次。用于释放资源
              4. 过滤器配置详解

启动服务器:

 

 

 

 暂停服务器

 

 

package hf.xueqiang.filter;

import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebFilter("/*")
public class FilterDemo3 implements Filter {
    /**
     * 每一次请求被拦截资源时,会执行。执行多次
     * @param request
     * @param response
     * @param chain
     * @throws ServletException
     * @throws IOException
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        System.out.println("doFilter......");
        chain.doFilter(request, response);
    }

    /**
     * 在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次
     * @param config
     * @throws ServletException
     */
    public void init(FilterConfig config) throws ServletException {
        System.out.println("init.....");
    }

    /**
     * 在服务器关闭后,Filter对象被销毁,如果服务器正常关闭,则执行destroy方法
     */
    public void destroy() {
        System.out.println("destroy.....");
    }


}

 

         4.过滤器配置详解

         5.过滤器链(配置 多个过滤器)     

posted @ 2023-02-20 11:49  zj勇敢飞,xx永相随  阅读(69)  评论(0编辑  收藏  举报