javaweb开发基本框架说明

一,配置文件加载顺序

  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;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容