首页 > 其他分享 >Filter细节web.xml配置方式以及执行流程&生命周期

Filter细节web.xml配置方式以及执行流程&生命周期

时间:2023-01-29 11:45:20浏览次数:34  
标签:xml web ServletException throws Filter init 执行 public

Filter细节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>com.example.filter.FilterDemo1</filter-class>
    </filter>

    <!-- 配置过滤器Filter -->
    <filter-mapping>
        <filter-name>demo1</filter-name>
        <!-- 拦截路径 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

 

过滤器的执行流程

复制代码
@WebFilter("/*")
public class FilterDemo2 implements Filter {
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {

        //对request对象请求消息增强
        System.out.println("filterDemo2执行了...");
        //放行
        chain.doFilter(req, resp);
        //对response对象的响应消息增强
        System.out.println("filterDemo2返回...");
    }

    public void init(FilterConfig config) throws ServletException {

    }

    public void destroy() {

    }
}
复制代码

 

 从运行结果可以看出,先执行过滤器,执行放行之后的资源,再返回执行过滤器放行之后的代码

 

 

 

 

 

 

过滤器的生命周期

doFilter:每一次请求被拦截资源时,会执行,执行多次

init:在服务器启动后,创建Filter对象,然后调用init方法,只执行一次,用于加载资源

destroy:在服务器关闭后,Filter对象被销毁,如果服务器是正常关闭,则会执行destroy方法,只执行一次,用于释放资源

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

    /**
     * 在服务器启动后,创建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...");
    }
}
复制代码

 

标签:xml,web,ServletException,throws,Filter,init,执行,public
From: https://www.cnblogs.com/qihaokuan/p/17072249.html

相关文章

  • 布隆过滤器(BloomFilter)
    避免缓存击穿的利器之BloomFilterBloomFilter概念布隆过滤器(英语:BloomFilter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射......
  • Office OpenXML 解析(二):字体
    在OpenXML文档中,字符的字体由RunFonts元素指定,如下所示:<w:rw:rsidRPr="001B7601">//Run<w:rPr><w:rFontsw:hint="eastAsia"w:ascii="TimesNewRo......
  • setting.xml的mirror、mirrorOf和pom.xml的repositories、repository的关系关联snapsh
    setting.xml的mirror、mirrorOf和pom.xml的repositories、repository的关系关联snapshots带有时间错问题解决方案nexus3.8私有仓库https://blog.csdn.net/Michaelwubo/a......
  • NSS Round7_web
    概述:题目来源Round7的web4—Shadowflag。比赛的时候也没做出来,但是也花费了很长时间去做这题和思考,所以赛后复现记录一下,自己遇到的坑及收获的一些技巧,知识等。感谢陈橘墨......
  • node借助jsonwebtoken生成token以及验证token是否过期
    生成token使用jsonwebtoken插件我当时使用的版本"jsonwebtoken":"^9.0.0",cnpmijsonwebtoken-S登录后生成token//routes/index.js文件varexpress=require(......
  • python-Couldn‘t find a tree builder with the features you requested: lxml
    执行BeautifulSoup(content,features='lxml')时报错,按照网上的方法安装lxml、重新安装lxml、安装指定版本lxml,都无效。最后发现只是PyCharm设置中project的pyth......
  • 巧用ExceptionFilter筛选器
    异常筛选器异常筛选器怎么使用我就不说了。主要记录两点:1、如何在开发环境和生产环境提示不同的异常信息? 因为我们知道,项目在开发期间是需要将异常完整信息展示方便......
  • sql 拼接字符串xml转行
    DECLARE@idsVARCHAR(2200)='a,c,d,e,f,g'SELECTc.value('.','varchar(50)')ASid......
  • ISM Web组态软件的组态应用开发之创建页面
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录​​前言​​​​一、创建电脑端页面​​​​二、设置首页​​​​2.手机端页面​​​​2.装饰页面​......
  • ISM Web组态软件通过系统脚本对RTSP视频录像
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录​​前言​​​​一、怎么录像​​​​二、使用步骤​​​​1.添加网络摄像头​​​​2.录像​​​​......