shiro之入口:EnvironmentLoaderListener

本文介绍了EnvironmentLoaderListener在Shiro框架中的作用,包括监听Web应用的生命周期事件、读取Shiro配置文件并创建关键对象如WebSecurityManager与FilterChainResolver。ShiroFilter作为框架的门面组件,在认证与授权过程中扮演重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、ServletContextListener是Web容器提供的用来监听Web应用的生命周期事件(比如出生,死亡)的。EnvironmentLoaderListener就是这样一种监听器。

2、EnvironmentLoaderListener是shiro的入口,它实现了ServletContextListener接口,继承了EnvironmentLoader类。如图:

173006_h89d_2427561.png

3、EnvironmentLoaderListener自己表面上做了两件事情:监听容器的启动与关闭事件;

(1)容器启动时,可以从 ServletContextEvent 中直接获取 ServletContext 对象,从而获取web.xml里的一些配置,比如我最想知道的.ini文件加载的地址。从中获取 WebEnvironment 接口的实现类(默认是 IniWebEnvironment),初始化该实例,并将其加载到 ServletContext 中

173019_VW1q_2427561.png

 

(2)当容器关闭时,销毁 WebEnvironment 实例,并从 ServletContext 将其移除。

4、实际上,上面两件事都是EnvironmentLoader做的

5、EnvironmentLoaderListener的两个方法是实现了ServletContextListener接口的contextInitialized和contextDestroyed。

总结:EnvironmentLoaderListener在容器启动时创建 WebEnvironment 对象,并由该对象来读取 Shiro 配置文件,创建WebSecurityManager 与 FilterChainResolver 对象,它们都在后面将要出现的 ShiroFilter 中起到了重要作用。从 web.xml 中同样可以得知,ShiroFilter 是整个 Shiro 框架的门面,因为它拦截了所有的请求,后面是需要 Authentication(认证)还是需要 Authorization(授权)都由它说了算。

 

 

 

转载于:https://my.oschina.net/u/2427561/blog/1512282

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值