shiro web环境初始化过程
在web工程中使用shiro的时候需要配置一个shiro的listenser(EnvironmentLoaderListener)和一个shiro的filter(ShiroFilter)。
listener用于初始化shiro的环境,filter用于拦截请求。
shiro的初始化。
EnvironmentLoaderListener继承EnvironmentLoader,并且实现了ServletContextListener的contextInitialized(ServletContextEvent ent)方法和contextDestroyed(ServletContextEvent event)方法
这里主要介绍初始化的contextInitialized方法。
在EnvironmentLoaderListener的contextInitialized方法中只有一行代码,就是调用了EnvironmentLoader的initEnvironment(ServletContext sc)方法。真正的初始化操作是在EnvironmentLoader中实现的。

在EnvironmentLoader中的initEnvironment方法中又通过调用createEnvironment方法进行Environment的创建。
在createEnvironment方法中先创建了一个Environment。然后调用了Environment的init方法,对Environment进行初始化

在determineWebEnvironment中创建Environment时,先检查ServletContext中是否配置了名字为shiroEnvironmentClass的变量,若配置了该变量则该变量的值应该为一个Environment子类的全限定名称,shiro会根据该类实例化一个Environment的子类

否则shiro会尝试使用ServiceLoader加载一个Environment的子类。

若ServiceLoader也没有加载成功,则shiro会实例化一个默认的IniWebEnvironment。然后调用environment的init方法初始化environment。
在IniWebEnvironment的init方法中会调用configure,configure方法会创建一个securityManger和一个filterchainResolver,

createWebSecurityManger方法中会使用默认的IniwebSecurityMangerFactory创建一个IniWebSecurityManger,同时在getDefaults方法中初始化一个IniFilterChainResolverFactory,用来创建filterChainResolver

如果在shiro的配置文件中配置了相关filter和url则会使用IniFilterChainResolverFactory的getInstance方法初始化一个FilterChainResolver。

在看一下IniFilterChainResolverFactory,

getInstance会调用createDefaultInstance方法,

而pathMatchingFIlterChainResolver会把shiro默认的filter加载到filterchainManager中



到这里,shiro的初始化就基本完成了,
end
shiro web环境初始化过程的更多相关文章
- Web容器初始化过程
一.SpringMVC启动过程 Spring的MVC是基于Servlet功能实现的,每个web工程中都有一个web.xml文件,web容器在启动的时候会加载这个配置文件,当一个web应用加载到web容 ...
- Web项目初始化过程
在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>. 接着容器会创建一个ServletCont ...
- 腾讯云服务器web环境配置过程
我买的服务器是: 可用区:香港二区 实例类型:标准型S2 操作系统:CentOS 6.5 64位 自己的电脑是 win10 ------------以上是背景------------------ 1 ...
- 登录式与非登录式&交互式与非交互式shell及其环境初始化过程
交互式shell和非交互式shell(interactive shell and non-interactive shell) 交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的 ...
- Android系统编译环境初始化时Product产品的import-nodes过程
从运行make -f config,mk文件開始,config,mk作为当前的makefile文件.将会被make解析,一般make解析Makefile文件流程首先是载入当中include的各种其它m ...
- Java web 加载过程
1.Web容器初始化过程 2.SpringMVC中web.xml配置 3.认识ServletContextListener 4.认识ContextLoaderListener 5.Dispatcher ...
- Web环境中Spring的启动过程
1.spring不但可以在JavaSE环境中应用,在Web环境中也可以广泛应用,Spring在web环境中应用时,需要在应用的web.xml文件中添加如下的配置: …… <context-par ...
- Shiro在Web环境下集成Spring的大致工作流程
1,Shiro提供了对Web环境的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的URL,然后进行相应的控制. ①配置的 ShiroFilter 实现类为:org.spri ...
- 尝试利用CentOS环境安装LiteSpeed WEB服务环境的过程
对于普通的网站搭建的环境虚拟主机就足够使用,不过近期公司的网站需要上线VPS主机,于是采用到LNMP(http://lnmp.org/)一键包安装的,运行还是比较好的,这不最近我也开始尝试接触VPS方 ...
随机推荐
- [tyvj1860]后缀数组
题目链接:http://www.tyvj.cn/p/1860 解题关键:模板题.贴一个代码详解 http://www.cnblogs.com/staginner/archive/2012/02/02/ ...
- linux命令-stty
一.用途: stty——改变和打印终端行设置 二.参数: 1.打印终端行设置 -a,--all 以人可读的方式打印所有当前设置:-a参数比单独的stty命令输出的终端信息更详细 -g,--save ...
- 【linux学习-centeros】
1:linux的目录结构: / root —?启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home —?存储普通用户的个人文件 ftp — 用户所有服务 httpd sa ...
- NPOI导出EXCEL部分样式不起作用
在使用NPOI导出excel的时候,设置cell样式,数据量多余6条之后,在后面几条数据没有样式(边框,对其,换行等). 原因是设置CellStyle的时候把CreateCellStyle放在循环列集 ...
- NetCore 学习笔记(DI 实例生命周期)
Transient: 每一次GetService都会创建一个新的实例 Scoped: 在同一个Scope内只初始化一个实例,同一个请求内只会被创建一次 Singleton :整个应用程序生命周期 ...
- JSONCPP开发环境搭建
环境设置 项目地址 https://github.com/open-source-parsers/jsoncpp.git 操作系统 64位 Fedora 24 安装jsoncpp $ git clon ...
- 开发php接口注意点
1.制定规范 开发前一定要定好一个规范,比如要定好数据返回的通用参数和格式.关于数据格式,用的比较多的有xml和json,我建议用json,因为json比xml的好处更多. 2.精简的返回数据 接口数 ...
- 51nod 1405【DFS】
思路: 对于结点 u 的子节点 v, 如果已经一直到结点 u 的答案ans[u],那么转移到对于结点 v,num[v] 为 v为根的树的结点个数,那么对于结点v的答案相对于结点u的答案来说, ans[ ...
- zoj3195(lca / RMQ在线)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3195 题意: 给出一棵 n 个节点的带边权的树, 有 q 组形 ...
- 初等变换求 |A| % Mod & A- % Mod & A* % Mod(模板)
// |A| * A- = A* (伴随矩阵) = 逆矩阵 * 矩阵的值 #include<cstdio> #include<cstring> #include<cstd ...