我爱编程

javaweb开发基本框架说明

2018-05-28  本文已影响28人  未来的路就在那

一,配置文件加载顺序

  1. web.xml ---->root-context.xml(加载spring容器) ---->springmvc.xml(springmvc的前端控制器)
  2. 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 />

  1. 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

  1. 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配置

  1. 配置数据库连接池 dataSource
  2. 配置事物管理器 transactionManager(注入dataSource)
  3. 配置事物的传播特性 transactionInterceptor(注入 transactionManager)
  4. 需要拦截的service(注入 transactionInterceptor)
  5. 配置sqlsessionfactory (注入dataSource)
  6. 配置mapper扫描包

三,freemarker

  1. 配置freeMarker的模板路径
<bean class="com.shtd.shtdweb.common.util.ShiroFreeMarkerConfigurer">
  1. 配置freeMarker视图解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  1. 在web.xml中配置freemark的servlet
  2. 在FreeMarker框架中使用Shiro的Tag标签

ShiroFreeMarkerConfigurer继承FreeMarkerConfigurer

在springmvc.xml中配置 如上第一步

第三步

引用<#global shiro = JspTaglibs["/WEB-INF/tld/shiro.tld"] />
使用
<@shiro.hasAnyRoles name="hrleader,hrteacher">  
</@shiro.hasAnyRoles>

四,ehcache(缓存)

  1. 启用缓存
<cache:annotation-driven cache-manager="ehCacheManager"  />
  1. 声明一个缓存管理器
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" >
  1. spring对ehcache的缓存工厂支持
<bean id="ehCacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">这里要加载(classpath:ehcache/ehcache-context.xml)
  1. 扫描包
<context:component-scan base-package="com.shtd.modules" />
  1. 使用
在接口中通过 
@Cacheable(value = "homeCache", key = "'menuTree'")来使用 (这里注解中value=”homeCache”与ehcache-context.xml中的cache名称属性值一致。)

五,shiro权限管理

  1. 词语理解--角色(role),权限(permission),资源(resource),用户(user)这四者的关系
    简单理解为用户有不同的角色,而角色对应着权限,而权限可以对资源进行增删改查等操作。
  2. 配置

配置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 安全过滤器

  1. 使用

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;

上一篇下一篇

猜你喜欢

热点阅读