先从思路开始把,当我们学一种技术的时候,首先要的是我们的思路要清晰,这才有可能把它弄明白,所以我们平时要多锻炼自己的逻辑思维能力,尽量多地想一些实际问题。Hibernate是持久层,Spring是一个装载组件提供服务的容器,Struts是一种MVC模式的框架。所以我就从Spring着想:采取了三个方式来整合。
第一种方式:
采用spring自带的一个插件:org.springframework.web.struts.ContextLoaderPlugIn
在struts-config.xml 的<message-resources
parameter="struts.ApplicationResources" />后面添加
<!-- struts插件 -->
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>。
但是当我们使用这种方式的时候需要注意一下:
1.我们在struts里的配置中的<action>配置中需要注意:需要用到spring中的动态struts代理:具体配置比如:
<!-- type:指的是spring中的动态struts代理,利用它可以截获对应的方法
所以此文件主要配置action中对应的方法-->
<action-mappings>
<action path="/findAll"
type="org.springframework.web.struts.DelegatingActionProxy"
scope="request" parameter="findAll">
<forward name="ok" path="/ok.jsp"/>
</action>
</action-mappings>
并且这里我们还需要复制一份spring的配置文件,文件名命名为:spring-action.xml(可以自己定义),作为专门配置action中的bean比如:
<!-- 此文件是配置一些对应的action模块的具体的类。
name要与struts-config.xml的path对应
-->
<bean name="/findAll" class="actions.MappingActions">
<property name="dao" ref="UserDAO"></property>
</bean>
2.还要注意的是,我们在action类中继承的是MappingDispatchAction,也就是说是利用Struts里中的
第二种方式:
采用Spring的Listener来监听获取Spring中的配置。主要操作是:
首先在web.xml中配置:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
但是当我们使用这种方式的时候需要注意一下:
1.我们在struts里的配置<action>不需要用到spring中的动态代理,直接配置,像纯struts里一样配置。
2.还要注意的是,我们在action类中继承的是MappingDispatchActionSupport,也就是说是利用Struts里中的,这样我们就可以通过spring的这个MappingDispatchActionSupport类中的方法获得在Spring中配置的bean:比如:在这个Action中我们需要用到UserDAO,我们就可以这样获得,这样减少了spring与struts的耦合度。
ApplicationContext context=this.getWebApplicationContext();
UserDAO
dao=(UserDAO) context.getBean("UserDAO");
第三种方式:
我们直接在web.xml中配置以下信息:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>springInitServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
我们同样使用的是struts的MappingDispatchAction,struts里的配置同样是纯Struts里的配置一样,不需要与spring的耦合,spring只与hibernate耦合。但是我们怎么获得spring里的bean注入呢?这就是关键了:比如我们在Action中需要调用service层的方法,则我们需要获得service的实例,但是又是事务层,我们通过了spring的事务管理机制来管理,也就是说我们需要获得这个service的在spring中的bean。注意我们通过:
WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());可以获得springContext.xml的配置文件信息,从而通过getBean("")的方法来获得这个service的实例。Ok.
public FileServiceInf getFileService(){
ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(
this.getServlet().getServletContext());
return (FileServiceInf) ac.getBean("modelProxy");
}
有兴趣的浏览者可以试着去作一下,我已经说得很明白了,注意:做IT的,就要学会做实验,计算机就是我们很好的老师,可以证明我们的所有观点。
分享到:
相关推荐
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,依次类推。 本光盘根目录下有11个文件夹,其内容和含义说明如下: ...
Struts 2+Hibernate+Spring整合开发技术详解sample.pdf
Struts2+Hibernate+Spring整合开发深入剖析与范例应用03源码
如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、Spring、Eclipse四个框架的使用,如何整合Struts+Hibernate+Spring+Eclipse框架。...
Struts2+Hibernate+Spring整合开发技术详解19章网上书店完整源码(内附数据库导出文件) 与书上最后一章内容完全对应 可以结合书上教程进行最后一章学习
Struts2+Hibernate+Spring整合教程
hibernate+spring+struts一个简单例子 <br>jar自己去下 test.sql 是mysql的脚本
mybatis+hibernate+spring+struts2整合型框架
《开发者突击:Java Web主流框架整合开发(J2EE+Struts+...随书附赠光盘内容包括《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》10种架构原型程序包、个人通讯录及办公自动化系统源程序。
已经整理好的Struts+hibernate+spring项目,一目了然,可直接使用、
Struts2+Hibernate+Spring整合后的增删改查 内有jar包,每个类中都有注释。清晰简单。一目了然。没有任何杂乱代码。 运行正常,数据库是mysql数据库。适合初学者参考。
一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去
Struts+Hibernate+Spring整合项目之登录部分 交流请发ffumax@126.com
JavaWeb整合开发王者归JSP+Servlet+Struts+Hibernate+Spring共分五部分。这是第三部分。
Hibernate+Spring+Struts2+ExtJS整合开发实例 非常经典!学习的好帮助!
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,依次类推。 本光盘根目录下有11个文件夹,其内容和含义说明如下: ...
Struts1+Hibernate+Spring整合,本人的一点总结!
struts2+HIbernate+Spring整合所需jar包 包含数据库连接池jar包 hibernate注解所需jar包 日志处理log4j及slf日志框架及实现的jar包
精通J2EE——Eclipse+Struts+Hibernate+Spring整合应用案例 pdf电子书, 包含所有18个章节的完整版, 美中不足的是扫描质量不是很高,且是第一版的,不是目前最新的第二版! 请看清楚了再下,免得后悔! 共有两个部分-这...
struts2+hibernate+spring整合的管理系统,内附有详细的源代码,层次清晰