Servlet3.0自动加载Listener和Filter的方式

先看一组继承关系:

ContextLoaderListener实现了ServletContextListener接口,了解过servlet的朋友都知道这个接口用来监听容器的初始化和销毁  所以在ContextLoaderListener实现了这个接口后,他就有了监听容器启动和销毁的功能,就可以在需要的时候加载一些特定的数据;比如配置文件

public class ContextLoaderListener extends ContextLoader implements ServletContextListener

以前在web.xml中我们都是手动的加载当前监听类,并且传入自己的配置文件如下:

 

但是现在是容器自己给我们加载,加载的流程如下:(JavaConfig方式配置)

当服务器启动的时候因为ContextLoaderListener实现了ServletContextListener 接口, 所以ContextLoaderListener类就可以监听容器的初始化(启动),即在服务器启动时提前加载需要的配置文件,所以当在服务器启动时: 接口WebApplicationInitializer下的诸多实现类
通过一系列的方法在服务器启动时就创建好了ContextLoaderListener监听器,以及将我们自己实现的DispactherServletConfig类(主配置类)中重写的getRootConfigClasses()方法传入的配置文件加入到当前监听器中(也可以说是ContextLoader);加载配置整个过程由ContextLoader类来实现
具体方法执行细则如下:


 注:上图是加载监听器执行方法的顺序,(不一定在同一个类中,部分在其子类中重写)

2.加载过滤器

过滤器均是tomcat中 Filter 的实现类, 由DispactherServletConfig自己实现的主配置类通过onStartup方法(在服务器启动前就执行)中加入自己配置的监听器( Filter 的实现类),在服务器启动前执行;

由AbstractDispatcherServletInitializer类中的registerDispatcherServlet方法将自己配置的过滤器添加到servletContext容器中,最终交由servlet加载。
 

 细节注释都在图片中了,如果有错误的还希望大佬指正。难免会有出错的地方!

感谢阅读!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值