一,配置文件加载顺序
- web.xml ---->root-context.xml(加载spring容器) ---->springmvc.xml(springmvc的前端控制器)
- root-context.xml做了那些事
2.1加载**.properties
<context:property-placeholder location="classpath:db/jdbc/jdbc.properties, classpath:db/mybatis/mybatis.properties, classpath:shiro/shiro.properties" />
2.2 配置扫描包和注解
<context:component-scan base-package="com.shtd.modules" />
<context:annotation-config />
<mvc:annotation-driven />
2.3 数据源配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
2.4 Interceptor.
2.5 缓存(加载ehcache-context.xml)
2.6 task任务扫描注解
2.7 JavaBean映射工具库(dozer-bean-mappings.xml)
2.8 加载 jdbc-context.xml shiro-context.xml
2.9 定义aspectj <aop:aspectj-autoproxy />
- springmvc.xml做了那些事
3.1 配置资源映射
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/css/**" location="/css/" />
3.2 配置FreeMarker
- web.xml做了那些事
4.1 加载spring容器
4.2 加载springmvc的前端控制器
4.3 freemarker的servlet
4.4 加载 shiroFilter
4.5 加载 sitemesh
4.6 编码过滤 避免出现乱码
4.7 为下载的文件自动装配相应的mime后缀
4.8 解决post乱码
二,jdbc配置
- 配置数据库连接池 dataSource
- 配置事物管理器 transactionManager(注入dataSource)
- 配置事物的传播特性 transactionInterceptor(注入 transactionManager)
- 需要拦截的service(注入 transactionInterceptor)
- 配置sqlsessionfactory (注入dataSource)
- 配置mapper扫描包
三,freemarker
- 配置freeMarker的模板路径
<bean class="com.shtd.shtdweb.common.util.ShiroFreeMarkerConfigurer">
- 配置freeMarker视图解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
- 在web.xml中配置freemark的servlet
- 在FreeMarker框架中使用Shiro的Tag标签
ShiroFreeMarkerConfigurer继承FreeMarkerConfigurer
在springmvc.xml中配置 如上第一步
第三步
引用<#global shiro = JspTaglibs["/WEB-INF/tld/shiro.tld"] />
使用
<@shiro.hasAnyRoles name="hrleader,hrteacher">
</@shiro.hasAnyRoles>
四,ehcache(缓存)
- 启用缓存
<cache:annotation-driven cache-manager="ehCacheManager" />
- 声明一个缓存管理器
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" >
- spring对ehcache的缓存工厂支持
<bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">这里要加载(classpath:ehcache/ehcache-context.xml)
- 扫描包
<context:component-scan base-package="com.shtd.modules" />
- 使用
在接口中通过
@Cacheable(value = "homeCache", key = "'menuTree'")来使用 (这里注解中value=”homeCache”与ehcache-context.xml中的cache名称属性值一致。)
五,shiro权限管理
- 词语理解--角色(role),权限(permission),资源(resource),用户(user)这四者的关系
简单理解为用户有不同的角色,而角色对应着权限,而权限可以对资源进行增删改查等操作。 - 配置
配置shiro的过滤器工厂类,id-shiroFilter要和我们在web.xml中配置的过滤器一致
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
配置权限管理器
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
在web.xml中配置shiro 安全过滤器
- 使用
3.1 拦截请求的配置,对不同类的url进行不同的角色或者权限过滤
authc:该过滤器下的页面必须验证后才能访问
anyroles:只有此角色才能访问
rulepermission:对访问的页面进行角色和权限验证
<property name="filterChainDefinitions">
<value>
/logout = logout
/home = authc,anyroles[hrteacher]
/mycenter = authc
/authenticate = anon
/sys/** = path
/hrteacher/** = authc,rulepermission,path
/teacher/** = authc,anyroles[teacher],path
</value>
</property>
3.2 public class CustomeRealm extends AuthorizingRealm 自定义一个类,继承AuthorizingRealm
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) 授权
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException 登录验证
六,org.dozer.DozerBeanMapper
主要用以节点数据整合,是一个JavaBean映射工具库。它支持简单的属性映射,复杂类型映射,双向映射,隐式显式的映射,以及递归映射
加载classpath:mapper/dozer-bean-mappings.xml;
网友评论