一囚巴,配置文件加載順序
- 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 數(shù)據(jù)源配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
2.4 Interceptor.
2.5 緩存(加載ehcache-context.xml)
2.6 task任務(wù)掃描注解
2.7 JavaBean映射工具庫(kù)(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 編碼過(guò)濾 避免出現(xiàn)亂碼
4.7 為下載的文件自動(dòng)裝配相應(yīng)的mime后綴
4.8 解決post亂碼
二赵抢,jdbc配置
- 配置數(shù)據(jù)庫(kù)連接池 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標(biāo)簽
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" />
- 聲明一個(gè)緩存管理器
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" >
- spring對(duì)ehcache的緩存工廠支持
<bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">這里要加載(classpath:ehcache/ehcache-context.xml)
- 掃描包
<context:component-scan base-package="com.shtd.modules" />
- 使用
在接口中通過(guò)
@Cacheable(value = "homeCache", key = "'menuTree'")來(lái)使用 (這里注解中value=”homeCache”與ehcache-context.xml中的cache名稱屬性值一致或舞。)
五哗魂,shiro權(quán)限管理
- 詞語(yǔ)理解--角色(role),權(quán)限(permission)跑杭,資源(resource)铆帽,用戶(user)這四者的關(guān)系
簡(jiǎn)單理解為用戶有不同的角色,而角色對(duì)應(yīng)著權(quán)限德谅,而權(quán)限可以對(duì)資源進(jìn)行增刪改查等操作爹橱。 - 配置
配置shiro的過(guò)濾器工廠類,id-shiroFilter要和我們?cè)趙eb.xml中配置的過(guò)濾器一致
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
配置權(quán)限管理器
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
在web.xml中配置shiro 安全過(guò)濾器
- 使用
3.1 攔截請(qǐng)求的配置窄做,對(duì)不同類的url進(jìn)行不同的角色或者權(quán)限過(guò)濾
authc:該過(guò)濾器下的頁(yè)面必須驗(yàn)證后才能訪問(wèn)
anyroles:只有此角色才能訪問(wèn)
rulepermission:對(duì)訪問(wèn)的頁(yè)面進(jìn)行角色和權(quán)限驗(yàn)證
<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 自定義一個(gè)類愧驱,繼承AuthorizingRealm
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) 授權(quán)
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException 登錄驗(yàn)證
六,org.dozer.DozerBeanMapper
主要用以節(jié)點(diǎn)數(shù)據(jù)整合椭盏,是一個(gè)JavaBean映射工具庫(kù)组砚。它支持簡(jiǎn)單的屬性映射,復(fù)雜類型映射掏颊,雙向映射糟红,隱式顯式的映射,以及遞歸映射
加載classpath:mapper/dozer-bean-mappings.xml乌叶;