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方 ...
随机推荐
- 服务器修改密码cmd
net user 账号 要修改的密码
- [poj3259]Wormholes(spfa判负环)
题意:有向图判负环. 解题关键:spfa算法+hash判负圈. spfa判断负环:若一个点入队次数大于节点数,则存在负环. 两点间如果有最短路,那么每个结点最多经过一次,这条路不超过$n-1$条边. ...
- codeforces educational round25
A #include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ; string s; c ...
- hibernate hql 查询指定…
以数组的形式抛出,前台页面就要把它当成一个数组来处理 以对象抛出,就要当成一个对象来处理. 在JSP页面使用标签时一定要注意这点. 版权声明:本文为博主原创文章,未经博主允许不得转载.
- Luogu 3320 [SDOI2015]寻宝游戏
一开始还真没想到. 发现从所有有宝藏的点出发绕一圈只要不刻意绕路答案都是一样的,即我们呢要求的最后答案$ans = dis(x_1, x_2) + dis(x_2, x_3) +... + dis(x ...
- ES Docs-2:Exploring ES cluster
The REST API Now that we have our node (and cluster) up and running, the next step is to understand ...
- Error creating form bean of class com.onlinebookstore.presentation.CatalogBean
Error creating form bean of class com.onlinebookstore.presentation.CatalogBean 可能是action form未编译 这个问 ...
- SQL语言 持续更新中……
SQL提供了很多的聚集函数 COUNT([DISTINCT\ALL]*) SUM([DISTINCT\ALL]<列名>)AVG().…… WHERE 子句中是不能用聚集函数作为条件表达式 ...
- js中top.location.href、parent.location.href用法
window.location.href.location.href是本页面跳转 parent.location.href是上一层页面跳转 top.location.href是最外层的页面跳转 举例说 ...
- 使用tuple统计文件中单词的个数
name = input("Enter file:") if len(name) < 1 : name = "input.txt" fhand = ope ...