***第一份手记***

下午时间观看老师讲的视频,自己动手实践练习得出的结论,讲其分享出来给大家,不喜勿喷,有那里说的不对讲得不好还请大家一一指出,谢谢!

过滤器链的执行顺序是服务器按照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 web 启动顺序_JavaWeb开发Servlet过滤器链执行顺序详解相关推荐

  1. java filter 调用链_JavaWeb开发Servlet过滤器链执行顺序详解

    ***第一份手记*** 下午时间观看老师讲的视频,自己动手实践练习得出的结论,讲其分享出来给大家,不喜勿喷,有那里说的不对讲得不好还请大家一一指出,谢谢! 过滤器链的执行顺序是服务器按照web.xml ...

  2. Filter过滤器链执行顺序

    Web应用允许多个过滤器来过滤页面请求--联想现实生活中的例子是最好理解的啦!比如:为了获得更加干净的水,可能需要多个过滤器来进行过滤. 这个时候就分为两种情况了 1:多个过滤器过滤的URL不同,那么 ...

  3. Gateway网关-过滤器链执行顺序

    过滤器执行顺序 请求进入网关会碰到三类过滤器:当前路由的过滤器.DefaultFilter.GlobalFilter 请求路由后,会将当前路由过滤器和DefaultFilter.GlobalFilte ...

  4. java web 生成验证码_Javaweb开发中通过Servlet生成验证码图片

    一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 package gacl.res ...

  5. java web课程题目_JavaWeb开发技术试题题目及答案,课程2020最新期末考试题库,章节测验答案...

    下列语句中是命题的是[ ]A.这个问题B.这只笔是黑色的C.一定相等D.画一条线段 低血容量休克A.血压80/50 mmH9,CVP 3 cmH20,四肢皮肤花斑.湿冷B.血压80/50 mmH9,C ...

  6. [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. java web 在线客服_WebSocket实现客服聊天系统实例详解

    WebSocket实现简单客服聊天系统 一 需求 一个多商家的电商系统,比如京东商城,不同商家之间的客服是不同的,所面对的用户也是不同的.要实现这样一个电商系统的客服聊天系统,那该系统就必须是一个支持 ...

  8. Java Web学习总结(39)——JavaEE常用的Jar详解

    activation:与javaMail有关的jar包,使用javaMail时应与mail.jar (mail.jar和activation.jar)一起加入到lib中去,具体负责mail的数据源和类 ...

  9. java获取request body_HttpServletRequest获取body内容(字符串/二进制)详解

    首页 > Java Web > SpringMvc应用 > HttpServletRequest HttpServletRequest获取body内容(字符串/二进制)详解 获取HT ...

最新文章

  1. SpringBoot + Redis:模拟 10w 人的秒杀抢单!
  2. 电脑休眠和睡眠的区别_关机、睡眠、休眠有啥区别?微软说非特殊情况不要关机...
  3. php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现
  4. Java并发编程实战~生产者-消费者模式
  5. 一作发14篇SCI,累计IF60,博士前两年,他也曾走过弯路
  6. Python脚本实现启停app获取资源占比信息
  7. 蓝桥杯 ALGO-107 算法训练 9-7链表数据求和操作
  8. 20169212《Linux内核原理及分析》第十二周作业
  9. laravel 模型中的一对一,一对多,多对多的关联
  10. Linux查找link文件,Linux下查找一个文件的所有软硬链接
  11. WordPress 安装主题时 提示 “无法创建目录”
  12. bt种子增加服务器,bt发布-BT种子怎么发布?服务器地址、发布者网址应怎么填写? 爱问知识人...
  13. WINDOWS 7 X64专业版SP1后续补丁包20150901(微软官方下载地址列表)
  14. 番外7林芝·救赎之旅的最后一站——混合现实科幻《地与光》
  15. 艾永亮:经济型酒店风光不再,亚朵锁定中端酒店市场打造超级产品
  16. c语言快速平方根算法,单片机开平方的快速算法
  17. Android下监听返回键、home键、任务键
  18. python opencv2 将两张图片合并为一张
  19. MySQL inet aton函数_MySQL INET_ATON()用法及代码示例
  20. 快速Euclidean算法

热门文章

  1. mosquitto支持websocket的使用方法
  2. Ubuntu安装指定版本clang-format
  3. 数值分析 python_数值分析python代码
  4. 液位单闭环实验计算机控制,过程控制实验报告3(液位单闭环实验)
  5. exadata磁盘组无法mount恢复---惜分飞 1
  6. 查看layui的版本号
  7. 3038 3n+1问题
  8. 【Objective-C】05-第一个OC的类
  9. CleanMyMac教程轻松解决各种使用难题
  10. PHP apache2.2 mysql 的安装