`

老到掉渣的Struts+hibernate+Spring 整合

阅读更多
Struts,Spring与hibernate集成:
1、在工程中导入spring支持,导入的Jar包有:
* Spring 2.0 Core Libraries
* Spring 2.0 ORM/DAO/Hibernate3 Libraries
* Spring 2.0 AOP Libraries
* Spring 2.0 Web Libraries
2、在Spring配置文件中配置dataSource和SessionFactory,将hibernate配置与Spring配置整合在一起(可以删除hibernate.cfg.xml文件);
3、导入数据库源所要使用的Jar包,如:DBCP所用的JAR包(commons-pool.jar);
4、修改所有DAO的hibernate实现,因为Spring中提供了一个HibernateDAOSupport类,可以简化数据库的操作。使用所有DAO类都继承自该类;
5、将DAO采用依赖注入的方式注入到Biz中,再将Biz采用依赖注入的方式注入到Action中,在Spring配置文件中做相应配置;
6、将Spring与Struts集成:
1)在spring配置文件配置Action:将Biz注入到Action中;
2)修改Struts的配置文件:将Action的type属性修改为:org.springframework.web.struts.DelegatingActionProxy;
3)在web.xml文件中配置监听器以及web应用的初始化参数:
<!-- 向监听器类中传递初始化参数,以获取beanFactory对象 -->
  <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext.xml /WEB-INF/applicationContext-beans.xml</param-value>
  </context-param>
 
  <!-- 使用监听器初始化Spring的beanFactory,并将其放入到Context中,在使用时将其取出,以获取IOC容器中的bean -->
  <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
7、为了解决应用中的中文乱码问题,我们可以不用自己开发过滤器类,Spring为我们提供了一个,只需要配置一下即可:
<!-- 使用Spring中的过滤器解决中文乱码问题 -->
  <filter>
  <filter-name>characterEncodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.Charact[color=brown][/color]erEncodingFilter</filter-class>
  <init-param>
  <param-name>encoding</param-name>
  <param-value>UTF-8</param-value>
  </init-param>
  </filter>
 
  <filter-mapping>
  <filter-name>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
8、为了解决hibernate延迟加载的问题,使用Spring中提供的过滤器来解决,它能够让Session
在请求解释完成之后再关闭,配置方式如下:
<!-- 解决hibernate延迟加载带来的异常,配置过滤器使Session在请求完成之后再关闭 -->
  <filter>
  <filter-name>hibernate session manager filter</filter-name>
  <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
 
  <filter-mapping>
  <filter-name>hibernate session manager filter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
9、因为OpenSessionInViewFilter在getSession的时候,会把获取回来的session的flush mode 设为FlushMode.NEVER。故进行insert、
update和delete操作时会产生异常:org.springframework.dao.InvalidDataAccessApiUsageException:
Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
因此需要采用spring的事务声明,使方法受transaction控制:
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>

<!-- 配置Advice(事务的传播特性) -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
<tx:method name="search*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>

<!-- 配置事务管理器应用的范围 -->
<aop:config>
<aop:pointcut id="affectMethods" expression="execution(* edu.accp.dao.hibImpl.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="affectMethods"/>
</aop:config>
10、 部署应用程序,启动服务器,如果发现异常:
java.lang.NoSuchMethodError:
org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
这是由于整合时Jar包的冲突引起的。应将"Web应用程序/WEB-INF/lib/asm-2.2.3.jar"删除即可。
分享到:
评论

相关推荐

    前端html+css 实现表白网页

    等我们老到哪儿也去不了, 还能满载着一生的幸福快乐。 我愿意爱你直到老去, 我会为我们的未来撑起一片天空, 为我们的将来担负起一生的责任, 愿意为你去做每一件能让你开心快乐的事。 所有我们经历的点点滴滴, ...

    2014届高考地理一轮复习方案 (基础演练+能力提升+选做) 第二单元 从地球圈层看地理环境课时作业 鲁教版

    热点不动,板块移动,使得岛屿年龄从老到新呈链状分布。 5. 地质年代与岩石类型:不同岩石的形成时间可以反映地质年代。如沉积岩通常形成于较早时期,而火山活动产生的岩浆岩则较年轻。化石往往存在于沉积岩中,...

    gwt-2.0.3.rar

    描述中的“老到掉牙的版本”意味着2.0.3可能不包含后来版本引入的新特性和改进,比如性能优化、新的UI组件、更好的移动设备支持等。不过,对于一些项目或环境,可能由于兼容性或其他原因,仍然需要使用这样的旧版本...

    Apollo-Pilot-Safety-Report-2018-安全报告.pdf

    经验老到的国宾司机-行为安全 3.1 ADS自动驾驶场景库 3.2 DPS策略库 3.3监控和诊断系统 3.4危险应对能力 站在巨人的肩膀上-功能安全 4.1安全流程 4.2功能安全设计 4.3预期功能安全 。。。 。。。 承担...

    NOD32自动换id免密码

    NOD32自动换id免密码,自己自动更换,不用老到网上找,麻烦死了

    构造地质学课程设计汇本.doc

    分析地层时,要按照年代顺序从老到新,研究岩性、厚度、产状、古生物、矿物组成、结构构造和颜色等特征。地层被划分为构造层,通常以不整合面作为分界。例如,松岭峪地区的地层包括上元古界的震旦系,早古生界的...

    佳能打印机通用清零程序

    含概从老到新的型号,使用操作方便,可对机器执行,清零,强力清洗等

    国人主题:android

    因为Android系统版本众多,从老到新的设备都需要支持,所以主题设计需要遵循AOSP(Android Open Source Project)的规范,确保在各种设备上运行稳定。同时,考虑到中国市场的特殊性,可能还需要集成特定的本地化服务...

    浙江省宁波市奉化高中慈溪市三山高中等六校2019_2020学年高二地理下学期期中联考试题

    10. 地层新老顺序:根据沉积岩的形成原理,一般越往下沉积时间越早,因此岩层由老到新的排序应该是从海拔较高处向海拔较低处依次变新。 11. 农作物收割进度:从2018年6月13日我国某种粮食作物收割进度统计图中,...

    鲁西铜石金矿田地质特征及成矿预测

    地层由老到新依次为新太古代沉积变质地层、古生代海相碳酸盐岩—碎屑岩沉积地层以及中生代―新生代陆源碎屑岩―火山碎屑岩沉积建造。其中,古生代寒武系和奥陶系地层分布较广,而寒武系地层是金矿体的重要赋存层位。...

    合肥盆地重力异常特征及其地质意义 (2005年)

    通过不同阶次小波细节特征的比较以及同布格异常总的特征比较,得到了一些盆地边界断裂及沉积范围随时代从老到新的动态变化信息.西界断裂周集一吴集断裂可以向南延伸至大别造山带;南部边界在舒城至晓天间随时代从...

    天津市静海区2019_2020学年高一地理10月月考试题2020011001101

    13. **生物演化顺序**:从老到新的年代顺序,首先是古生代的三叶虫,然后是中生代的恐龙,最后是新生代的哺乳动物。 14. **大气层结构**:飞机与龙卷风相逢发生在对流层,因为对流层是天气现象发生的地方,包括龙卷...

    综合地质学复习资料_地大北京.doc

    * 面相:在垂直褶皱的剖面上观察,岩层沿轴面所示由老到新的方向。 * 面向:是指成层岩层顶面法线所指的方向,是成层岩系中岩层由老变新(由底面至顶面)的方向。 * 走向:倾斜平面与水平面的交线叫做走向线,走向线...

    江苏省泰州市姜堰区2014-2015学年高二地理下学期期初学业水平模拟测试试题

    地质构造与地壳物质循环:图示中I、Ⅱ、Ⅲ、Ⅳ代表不同年代的岩石,根据地壳物质循环,沉积岩层一般由老到新,而侵入岩和变质岩可能形成于已有岩石之上,因此岩石顺序可能是由老到新:Ⅳ、Ⅱ、Ⅰ、Ⅲ。同时,地下水...

    湖南省宁远县第一中学2019_2020学年高一地理上学期第三次月考化试题201912190226

    16. 地质构造与岩层顺序:地质剖面图中,岩层编号①~⑧年代由老到新,意味着在没有断层或不整合面的情况下,越靠下的岩层年代越老。根据图中信息,判断地质构造和岩层顺序即可。 这些知识点涵盖了天文、地理、地球...

    性格内向的人的面试技巧

    首先,性格内向的人应该展现自己的沉稳老到和逻辑性强。性格内向者平常都有擅长考虑的性情习气,因此,在承受面试时,应该充沛展露本身遇事不慌、冷静稳重的特点和气质,答复问题时中心突出、层次清楚,努力把答复主...

    吉林诗北师大附中净月校区2016届高三地理上学期限时训练3

    从描述中我们可以推断,地层从a河谷到b、c河谷是由老到新的顺序,这通常意味着河流切割了不同年代的地层,即存在地质构造活动。选项A的背斜谷和C的向斜谷是常见的地质构造地貌类型。背斜是地层向上拱起,中心部分老...

    《插秧歌》理解性默写汇编.docx

    "田夫抛秧田妇接,小儿拔秧大儿插"这两句尤为突出,它们刻画了从老到小共同参与农事的场景,显示了劳动的紧张与和谐。 诗中的"笠是兜鍪蓑是甲,雨从头上湿到胛",这句运用了比喻手法,将农民的斗笠比作战士的头盔,...

    【《风吹一生》阅读附答案】 风吹一生阅读答案.docx

    这句话通过“风”的形象,展现了祖父从不服老到无奈接受衰老的过程,表达了作者对祖父逐渐老去的深深感慨和对祖父的深深眷恋。(3 分) 20、文中充满了对祖父深深的爱和怀念之情。例如,第③段中,祖父在“我”离开...

    《獾的礼物》绘本故事PPT模板

    儿童绘本故事PPT下载:《獾的礼物》PPT;...他已经很老了,老到几乎无所不知,老到知道自己快要死了。 獾并不怕死。死,仅仅是意味着他离开了他的身体,獾不在乎。因为随着岁月的流逝,他的身体早就不听使唤

Global site tag (gtag.js) - Google Analytics