Aug 24

手动整合Struts1.3+Spring2.5+Hibernate3 不指定

Heck , 23:30 , 编程杂谈 , 评论(0) , 引用(0) , 阅读(681) , Via 本站原创 | |
      下面来谈下手动整合Struts1.3+Spring2.5+Hibernate3框架的方法,按步骤如下smile
1.首先准备好整合用的jar包28
     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的人有所帮助。 jzan


来源:Heck's Blog
地址:http://www.hecks.tk/struts-spring-hibernate/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!