8月24
下面来谈下手动整合Struts1.3+Spring2.5+Hibernate3框架的方法,按步骤如下
:
1.首先准备好整合用的jar包
Hibernate的jar包:hibernate3.jar、lib\required下的所有jar包(共6个)、lib\optional\ehche下的ehcache-1.2.3.jar、slf4j-nop-1.5.2.jar共9个包
Spring的jar包:dist\spring.jar、lib\jakarta-commons下的commons-logging.jar、commons-dbcp.jar、commons-pool.jar、lib\aspectj下的两个jar包、lib\cglib\cglib-nodep-2.1_3.jar、lib\j2ee下的common-annotations.jar、lib\log4j\log4j-1.2.15.jar、dist\modules\spring-webmvc-struts.jar共10个包
Struts的jar包:lib下面的包除antlr-2.7.6.jar(由于Spring中已经存在一个antlr-2.7.6.jar,所以把Struts中的antlr-2.7.2.jar删除,避免jar冲突)外,全部都要,共19个
另外还有数据库驱动包,我用的是MySQL数据库,mysql-connector-java-5.0.5-bin.jar
2.在创建好的WEB项目中引入Hibernate、Spring、Struts以及数据库驱动等所必须的jar包
3.先整合Spring和Hibernate,在SpringXML配置文件中配置数据源
4.在SpringXML配置文件中配置Hibernate的SessionFacotry
5.SpringXML配置文件中配置事务管理
6.建立user表的pojo类
7.实体Bean配置Userinfo.hbm.xml
8.创建业务层服务接口UserinfoService
9.建立业务层服务类UserinfoServiceBean
最后把下面这代码加入到SpringXML配置文件中去
10.对业务层UserinfoServiceBean的每个方法进行单元测试
测试结果如下:
到此已经将Spring与Hibernate整合成功,接下来再整合Struts
11.在Web容器中配置Struts,即在web.xml中配置
12.在Web容器中实例化Spring容器,在web.xml中配置如下
13.建立Struts的Action文件UserinfoAction
14.建立Struts配置文件struts-config.xml,把UserinfoAction配置好
15.创建一个显示查询结果的userinfoList.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户信息列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body >
<h1>
Test Reslut
</h1>
<c:forEach items="${userinfoList}" var="user">
ID=${user.id},Name=${user.name},Age=${user.age}<br>
</c:forEach>
</body>
</html>
页面显示结果如下:

虽然已成功将SSH整合成功了,但有一点缺陷的地方就是在Action每次要取得Spring容器时,都要通过
去获取Spring容器实例,其实我们可以通过Spring的依赖注入原理省去其中的步骤
16.使用SpringIOC依赖注入管理Struts的Action
把struts.cfg.xml的内容改为如下形式:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<!--采用SpringIOC的依赖注入,此处的type可以不配置。
如果配置type,请求处理器会在Spring容器寻找不到的Bean实例情况下,
会交给Struts进行处理,Struts会创建该对象并放入缓存中。
建议:如果使用了Spring的依赖注入,type也就无需要配置了。
-->
<action-mappings>
<action path="/userinfo" scope="request">
<forward name="list" path="/userinfoList.jsp" />
</action>
</action-mappings>
<!-- 配置spring的请求控制器 -->
<!--
请求路径是/userinfo.do
首先交给ActionServlet处理,接下来交给Spring的请求处理器来处理
Spring的请求处理器的工作就是:
请求处理器会根据用户请求的路径(/userinfo),到Spring容器中寻找和名称匹配的Bean,
寻找到之后就采用Bean实例处理用户的请求。
-->
<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor">
</set-property>
</controller>
</struts-config>
将下面这行代码加到SpringXML配置文件中去
注意:一定要确保action的path属性值与bean的名称相同,尤其别掉了"/"
在UserinfoAction中可以写成如下形式:
org.springframework.web.struts.DelegatingRequestProcessor处理流程如下:

由于用到的库文件太多,在此我只能把源码和数据库文件传上来,希望对刚接触SSH的人有所帮助。
下载文件
来源:Heck's Blog
地址:https://www.heckjj.com/struts-spring-hibernate/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
:1.首先准备好整合用的jar包
Hibernate的jar包:hibernate3.jar、lib\required下的所有jar包(共6个)、lib\optional\ehche下的ehcache-1.2.3.jar、slf4j-nop-1.5.2.jar共9个包
Spring的jar包:dist\spring.jar、lib\jakarta-commons下的commons-logging.jar、commons-dbcp.jar、commons-pool.jar、lib\aspectj下的两个jar包、lib\cglib\cglib-nodep-2.1_3.jar、lib\j2ee下的common-annotations.jar、lib\log4j\log4j-1.2.15.jar、dist\modules\spring-webmvc-struts.jar共10个包
Struts的jar包:lib下面的包除antlr-2.7.6.jar(由于Spring中已经存在一个antlr-2.7.6.jar,所以把Struts中的antlr-2.7.2.jar删除,避免jar冲突)外,全部都要,共19个
另外还有数据库驱动包,我用的是MySQL数据库,mysql-connector-java-5.0.5-bin.jar
2.在创建好的WEB项目中引入Hibernate、Spring、Struts以及数据库驱动等所必须的jar包
3.先整合Spring和Hibernate,在SpringXML配置文件中配置数据源
4.在SpringXML配置文件中配置Hibernate的SessionFacotry
5.SpringXML配置文件中配置事务管理
6.建立user表的pojo类
7.实体Bean配置Userinfo.hbm.xml
8.创建业务层服务接口UserinfoService
9.建立业务层服务类UserinfoServiceBean
最后把下面这代码加入到SpringXML配置文件中去
10.对业务层UserinfoServiceBean的每个方法进行单元测试
测试结果如下:
11.在Web容器中配置Struts,即在web.xml中配置
12.在Web容器中实例化Spring容器,在web.xml中配置如下
13.建立Struts的Action文件UserinfoAction
14.建立Struts配置文件struts-config.xml,把UserinfoAction配置好
15.创建一个显示查询结果的userinfoList.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>用户信息列表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body >
<h1>
Test Reslut
</h1>
<c:forEach items="${userinfoList}" var="user">
ID=${user.id},Name=${user.name},Age=${user.age}<br>
</c:forEach>
</body>
</html>
页面显示结果如下:
虽然已成功将SSH整合成功了,但有一点缺陷的地方就是在Action每次要取得Spring容器时,都要通过
去获取Spring容器实例,其实我们可以通过Spring的依赖注入原理省去其中的步骤
16.使用SpringIOC依赖注入管理Struts的Action
把struts.cfg.xml的内容改为如下形式:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<!--采用SpringIOC的依赖注入,此处的type可以不配置。
如果配置type,请求处理器会在Spring容器寻找不到的Bean实例情况下,
会交给Struts进行处理,Struts会创建该对象并放入缓存中。
建议:如果使用了Spring的依赖注入,type也就无需要配置了。
-->
<action-mappings>
<action path="/userinfo" scope="request">
<forward name="list" path="/userinfoList.jsp" />
</action>
</action-mappings>
<!-- 配置spring的请求控制器 -->
<!--
请求路径是/userinfo.do
首先交给ActionServlet处理,接下来交给Spring的请求处理器来处理
Spring的请求处理器的工作就是:
请求处理器会根据用户请求的路径(/userinfo),到Spring容器中寻找和名称匹配的Bean,
寻找到之后就采用Bean实例处理用户的请求。
-->
<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor">
</set-property>
</controller>
</struts-config>
将下面这行代码加到SpringXML配置文件中去
注意:一定要确保action的path属性值与bean的名称相同,尤其别掉了"/"
在UserinfoAction中可以写成如下形式:
org.springframework.web.struts.DelegatingRequestProcessor处理流程如下:
由于用到的库文件太多,在此我只能把源码和数据库文件传上来,希望对刚接触SSH的人有所帮助。

下载文件 来源:Heck's Blog
地址:https://www.heckjj.com/struts-spring-hibernate/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
HTTP调试工具:Fid
理解何为面向接口编程,重



