读书人

Struts2 - Spring - Hibernate 调整简

发布时间: 2012-10-30 16:13:36 作者: rapoo

Struts2 - Spring - Hibernate 整合简单样例

初学 Struts2,在整合 Spring 和 Hibernate 时遇到一些麻烦,下面以一个简单样例说明操作过程,以备不时只需。如有不当之处,望不吝赐教。

开发环境:
MyEclipse 6.5
Struts 2.1.8.1
Spring 2.5

Hibernate 3.2
Tomcat 6.0

MySQL 5.1

?

1. 新建 web 项目
新建 Java EE 5.0 的 web project

?

2. 项目配置
2.1 配置文件目录
在 src 下新建 config 文件夹,并在该文件夹下新建三个文件夹,分别是:hibernate,spring 和 struts2,这三个文件夹分别用于放置 hibernate,spring 和 struts2 的配置文件,以便统一管理。

?

2.2 JAR 包目录
在项目根目录下新建文件夹 lib,并在该文件夹下新建三个文件夹,分别是:hibernate,spring 和 struts2,这三个文件夹分别用于放置 hibernate,spring 和 struts2 的 JAR 文件,以便统一管理。

?

说明:上边的配置纯属个人偏好或者习惯。

?

3. 添加 Struts2 的支持
将 struts2 所需的基础包以及 struts-spring-plugin 包复制到 lib/struts2 文件夹下,并将这些 JAR 包添加到项目的 classpath。如下图所示。

Struts2 - Spring - Hibernate 调整简单样例

?

4. 添加 Spring 支持
右键项目 --> MyEclipse --> Add Spring Capabilities...,选中一下四组 spring 类库:

Spring 2.5?AOP Libraries,

Spring 2.5 Core Libraries,

Spring 2.5 Persistence Core Libraries,

Spring 2.5 Persistence JDBC Libraries

并将 JAR 文件复制到 lib/spring 目录下,同时选中创建 applicationContext.xml 文件,并将其存放至 src/config/spring 目录下。如下两图所示。

Struts2 - Spring - Hibernate 调整简单样例

?

Struts2 - Spring - Hibernate 调整简单样例

?

5. 添加 Hibernate 支持

右键项目 --> MyEclipse --> Add?Hibernate Capabilities...,选中如下图所示的四组类库,同时将 JAR 文件复制到 lib/hibernate 目录下,如下四图所示,一步一步 Next 即可,最后一步时选择不创建 SessionFactory。

Struts2 - Spring - Hibernate 调整简单样例

?

Struts2 - Spring - Hibernate 调整简单样例

?

Struts2 - Spring - Hibernate 调整简单样例

?

Struts2 - Spring - Hibernate 调整简单样例

?

Struts2 - Spring - Hibernate 调整简单样例

?

6. JAR 包的整理

6.1 添加其他所需的 JAR 包

复制 mysql jdbc 驱动包到 lib/hibernate 目录下,

复制 spring-web.jar 包到 lib/spring 目录下,

将 lib/struts2,lib/hibernate,lib/spring 所有尚未添加到 classpath 的 JAR 包全部添加到项目的 classpath

?

6.2 移除有冲突的 JAR 包

在完成了上述操作后,需要检查所有的 JAR 包是否有冲突。比如在样例中,添加 struts2 JAR 包时有 commons-logging-1.0.4,而添加 spring JAR 包时有 commons-logging.jar,这两个 JAR 包由可能会有冲突,需要将其中一个从 classpath 中删除。

注意:这里需要特别注意的是,在 hibernate 中有 cglib-2.1.3.jar,而 spring 中有 cglib-nodep-2.1_3.jar,这两者也是有冲突的,需要将前者从 classpath 中删除,否则在启动系统时会出现下面的错误:

?

11.2 struts.xml

将该文件存放至 src/config/struts2 目录下。

其余 bean 的定义:

?

12.?JSP 页面?

12.1 index.jsp

?

12.2 result.jsp

?

?

?

-----------------------------------------------------
Stay Hungry, Stay Foolish!
Afa
Aug 3rd, 2010
-----------------------------------------------------

?



3.3 声明式事务处理
在 spring 中对事务进行管理时,可以显示地进行事务处理的定义,如下所示:

说明:propagation 表示的是事务的传播特性,使用 required 时,是当检测到 add 开头的方法时,就看此时有没有开启的事务,如果有则将方法放进事务中去,如果没有,则新建一个事务,然后将方法放进去。如果检测到其它的方法,则给其只读数据库的属性,即当本方法在读时,其它的方法不能再去写了,这保证一个事务的完整性。

3.4 AOP
上一个配置是针对于所有包中类的事务处理方法的设置。下面一段是 <aop:config/> 的定义,它确保由 'txAdvice' bean 定义的事务通知在应用中合适的点被执行。

这里指的是,当执行到 com.thu.afa.javaee.service.impl 这个包下面的任何类的任何方法,而且不管参数是什么,也就是说这个包下面的所有方法调用了,都要接受前面的 transactionManager 的管理。

5. JSP 页面表单元素

注意:这里的表单元素的 name 属性值,这里采用的是 Struts2 的属性驱动方式。<property name="mappingDirectoryLocations"> <list> <value> WEB-INF/classes/config/hibernate </value> </list> </property>

读书人网 >软件架构设计

热点推荐