专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Filter生命周期详解

Filter生命周期详解

更新时间:2021-11-15 10:52:43 来源:星辉 浏览754次

Filter生命周期

过滤器要重写3个方法

init(FilterConfig filterConfig):启动项目的时候执行

doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain):资源拦截的时候执行

destroy():正常关闭项目的时候执行

来看下面例子,准备2个Filter过滤器,都拦截所有的路径

过滤器demo2代码

package com.lingaolu.filter; 
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException; 
/**
 * @author 林高禄
 * @create 2020-08-04-9:42
 */
@WebFilter("/*")    
public class Demo2 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("demo2过滤器初始化了......");
    } 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("demo2过滤器进来了......");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("demo2过滤回来了......");
    } 
    @Override
    public void destroy() {
        System.out.println("demo2过滤器摧毁了......");
    }
}

过滤器demo3代码

package com.lingaolu.filter; 
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException; 
/**
 * @author 林高禄
 * @create 2020-08-04-9:42
 */
@WebFilter("/*")
public class Demo3 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("demo3过滤器初始化了......");
    } 
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("demo3过滤器进来了......");
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("demo3过滤回来了......");
    } 
    @Override
    public void destroy() {
        System.out.println("demo3过滤器摧毁了......");
    }
}

index.jsp代码 ,里面学了一句输出语句

启动项目,执行了init方法,且每个过滤器的init都只执行一次

访问index.jsp,每次访问都执行,并且先执行的过滤器,最后回来,有点先进后出的感觉

正常关闭项目,每个过滤器的destrpy方法都只执行一次

通过上述相信大家对Filter生命周期已经有所了解,大家如果想学习更多相关知识,可以来关注一下星辉的Java星辉在线学习,里面的课程内容丰富,细致全面,从入门到精通,适合没有基础的小伙伴学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>