shiro之入口:EnvironmentLoaderListener

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

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

三、EnvironmentLoaderListener本身表面上作了两件事情:监听容器的启动与关闭事件;xml

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

 

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

四、实际上,上面两件事都是EnvironmentLoader作的接口

五、EnvironmentLoaderListener的两个方法是实现了ServletContextListener接口的contextInitialized和contextDestroyed。生命周期

总结:EnvironmentLoaderListener在容器启动时建立 WebEnvironment 对象,并由该对象来读取 Shiro 配置文件,建立WebSecurityManager 与 FilterChainResolver 对象,它们都在后面将要出现的 ShiroFilter 中起到了重要做用。从 web.xml 中一样能够得知,ShiroFilter 是整个 Shiro 框架的门面,由于它拦截了全部的请求,后面是须要 Authentication(认证)仍是须要 Authorization(受权)都由它说了算。事件

相关文章
相关标签/搜索