java filter 调用链_JavaWeb开发Servlet过滤器链执行顺序详解
***第一份手记***
下午时间观看老师讲的视频,自己动手实践练习得出的结论,讲其分享出来给大家,不喜勿喷,有那里说的不对讲得不好还请大家一一指出,谢谢!
过滤器链的执行顺序是服务器按照web.xml文件的配置先后顺序执行的,
而过滤器的加载是从后往前的顺序加载的。
先创建一个过滤器类FilterTest:
public class FilterTest implements Filter{
static{
System.out.println("------------static------------");
}
public FilterTest() {
System.out.println("***********FilterTest()******");
}
@Override
public void destroy() {
System.out.println("FilterTestDestroy()");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("FilterTestStart---doFilter***");
chain.doFilter(request,response);
System.out.println("FilterTestEnd---doFilter***");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("FilterTestInit()");
}
}
在创建第二个过滤器类FilterDemo:
public class FilterDemo implements Filter{
static{
System.out.println("------------FilterDemoStatic------------");
}
public FilterDemo() {
System.out.println("***********FilterDemo()******");
}
@Override
public void destroy() {
System.out.println("FilterDestroy()-------");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("FilterStart------doFilter()------");
chain.doFilter(request, response);
System.out.println("FilterEnd--------doFilter()-------");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("FilterInit()");
}
}
在这两个类中定义的静态方法块,构造方法和生命周期的方法。
在web.xml文件中配置过滤器(对同一个URL进行过滤)
FilterTest
com.web.filter.FilterTest
FilterTest
/index.jsp
FilterDemo
com.web.filter.FilterDemo
FilterDemo
/index.jsp
最后在index.jsp文件中加入一段输出信息,用于判断请求执行的过程:
System.out.println("index.jsp***");
当tomcat服务器启动的时候:
------------FilterDemoStatic------------
***********FilterDemo()******
FilterInit()
------------static------------
***********FilterTest()******
FilterTestInit()
是先加载了FilterDemo的静态块然后是构造方法,接着是Filter的初始化方法,最后才加载FilterTest的静态块跟构造方法,初始化方法。
当jsp页面发送请求时:
FilterTestStart---doFilter***
FilterStart------doFilter()------
index.jsp***
FilterEnd--------doFilter()-------
FilterTestEnd---doFilter***
执行的顺序就是FilterTest的doFilter()的start接着是FilterDemo的doFilter()的start,然后在请求,请求加载完整个页面之后才是FilterDemo的End,最后才是FilterStart的End。
这里的jsp页面只输出了一句index.jsp***,而不是两句的原因是因为jsp是同一个URL已经加载完成了,所以只输出了一句。
当tomcat服务器停止的时候:
FilterDestroy()-------
FilterTestDestroy()
首先被销毁的是FilterDemo过滤器,然后在是FilterTest过滤器。
最后我们可以得出结论就是:过滤器的转载顺序是服务器按照we.xml文件中定义的顺序从后往先的顺序转载的,而过滤的顺序就是按照先后顺序过滤的,而销毁也是从后往先销毁的。
java filter 调用链_JavaWeb开发Servlet过滤器链执行顺序详解相关推荐
- unity 继承会调用start吗_Unity 继承MonoBehaviour脚本 执行顺序 详解
先看结果 Awake ->OnEnable-> Start ->-> FixedUpdate-> Update -> LateUpdate ->OnGUI ...
- java web 启动顺序_JavaWeb开发Servlet过滤器链执行顺序详解
***第一份手记*** 下午时间观看老师讲的视频,自己动手实践练习得出的结论,讲其分享出来给大家,不喜勿喷,有那里说的不对讲得不好还请大家一一指出,谢谢! 过滤器链的执行顺序是服务器按照web.xml ...
- java try、catch、finally及finally执行顺序详解
1.为什么要用finally 先看一个没有finally的异常处理try-catch语句: 假设count为要使用到的资源,并且用完要求释放此资源.那么我们可以把释放资源的语句放到try-catch后 ...
- Java 中 finally 与 return 的执行顺序详解
java方法是在栈幀中执行,栈幀是线程私有栈的单位,执行方法的线程会为每一个方法分配一小块栈空间来作为该方法执行时的内存空间,栈幀分为三个区域: 1 . 操作数栈,用来保存正在执行的表达式中的操作数, ...
- JAVA构造器、静态上下文的执行时机与代码执行顺序详解
先看代码案例 package com.exemple.demo.test.preciate;public class Father {private int i = test();private st ...
- java过滤器的执行顺序_Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)...
Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...
- 区块链软件开发:区块链颠覆性渐渐开始 2019年需求侧开始涌现出大量需求...
区块链软件开发:区块链颠覆性渐渐开始 2019年需求侧开始涌现出大量需求 需求侧缺乏弹性会导致短期内并不会涌现出大量应用,但这不代表区块链技术没有应用场景,相反随着对于区块链技术的理性认识加深以及技术 ...
- 链游开发公司 区块链游戏开发公司
对于区块链游戏开发者来说,在NFT链游开发中,经常要用到的一句话,维特根斯坦的语言理念是:语言是区块链游戏,更是一种区块链游戏生活. 链接开发将由海德格尔(MartinHeidegger)和维特根斯坦 ...
- java开发中常用的Git命令详解
java开发中常用的Git命令详解(IDEA内如何操作) 一:写这篇文章的目的是什么? 二:使用场景在哪里? 1:当我们要使用idea去git仓库拉代码时,首先我们的idea得配置git工具 2:项目 ...
最新文章
- sdr 软件_SDR 软件定义的无线电
- (JAVA学习笔记) 关于数据类型的一些扩展-面试时经常问到的问题
- 深入理解javascript系列(十七):函数柯里化
- 在图形中使用指定字体
- 此服务器的时钟与主域控制器的时钟不一致_基于域的GPS时钟同步配置
- html如何运用循环添加表格,萌新提问!!!如何用for循环循环表单?
- 拼多多开卖劳斯莱斯,直降122万,10万人表示想拼!
- 医学图像分析相关的会议
- 毕设日志——查看系统基本信息的linux命令
- 完整版商城PHP源码小程序,前后端+后台+小程序;访问地址在文末
- 计算机网络保密管理十个严禁,涉密网络保密管理规定
- 机器学习实战应用案例100篇(十二)-樽海鞘算法从原理到实战应用案例
- 电脑硬盘怎么测试软件,如何通过软件检测电脑硬盘坏道?
- Secure CRT 最大显示行数的设置
- 递归算法应用实例------八皇后算法
- MAC表、ARP缓存表、路由表以及端口映射NAT
- HR最不认同的5大跳槽理由排行榜
- 2022贵州省农村信用社员工招聘模拟题及答案
- 【笨方法学PAT】1116 Come on! Let's C (20 分)
- Qt编写自定义控件:简单的方式绘制渐变进度条
热门文章
- 游戏主播这个行为终于有人治了!腾讯下“禁令”
- “单口相声”回归!罗永浩要开发布会了:黑科技!不售票!
- 腾讯视频与中国电信签署战略合作协议 共同成立5G联合实验室
- 2G退网 对用户影响几何?
- 小米A3真机开箱照片曝光:水滴屏+后置三摄
- 坑了多少人?这就是乐视网负债总规模!
- 蔚来汽车发布声明:自称“前员工”造谣者已被起诉 查明并非前员工
- 韩国两名男子因偷拍汽车旅馆视频被捕 1600名房客受害
- 已免押1000亿!芝麻信用:靠信用出去浪
- 【进击大厂之力扣每日打卡】七进制数