J2EE SSH框架整合教程

本文仅作为学习和研究的参考,与实际项目使用技术有所不同,由于作者水平有限,错误疏漏在所难免,请各位看官批评指教。

项目的源代码放在:https://github.com/Frank-Pei/SSHIntegrationDemo

使用软件环境概述:JDK1.7.0_79, Eclipse Mars4.5, Oracle11gR2版本11.2.0.3, Tomcat7.0.65, Maven2

SSH框架其实是指Spring, Struts, Hibernate, SSH框架的整合其实是Spring+Struts的整合以及Spring+Hibernate的整合。

整合步骤如下:

(1) 添加三个框架的jar文件,并创建相关的配置文件。

(2) 为Hibernate添加数据源。

(3) 配置SessionFactory对象

(4) 实现并配置Dao和Service.

(5) 使用Spring简化数据库事务处理,即配置声明式事务管理。

(6) 实现并配置Action。

其中(2)-(5)属于Spring整合Hibernate,步骤(6)属于Spring整合Struts2。

(一)工程环境的搭建

1. 从创建Maven工程开始,archetype选择webapp

2. Group Id & Artifact Id

3. 创建完成后打开工程属性,修改Build Path里面的JRE(默认的Maven工程会使用JRE1.5)

4. 点击Remove后,Add Library选择默认的jre7

5. 创建完成的maven工程会报错,原因是没有将tomcat添加到Build path下,如图所示操作即可。

6. 至此基础工作已经完成。开始添加工程需要的jar文件。

(二)Spring2与Hibernate3的整合

1. 在web容器中配置数据源,数据源中用到了连接池技术(Connection Pool),常用的连接池技术有c3p0, dbcp, proxool, 这里我们使用c3p0

首先,需要c3p0的jar包,可以参考本文最后的pom.xml文件;并且需要将oracle数据库jar文件放在tomcat安装目录下的lib/子目录下。

其次,配置一共要修改三个文件,分别是Tomcat安装目录下的context.xml, web.xml,spring配置文件。代码如下:

context.xml中的配置,

<Resource name="jdbc/ORCL" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@192.168.0.10:1521:ORCL"
              username="frank" password="frank" maxActive="20" maxIdle="10"
              maxWait="-1"/>

web.xml中的配置,

<resource-ref>
     <description>Oracle Datasource example</description>
     <res-ref-name>jdbc/ORCL</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
</resource-ref>

spring配置文件中的配置,

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/jdbc/ORCL"></property>
</bean>

2. 配置SessionFactory,必须要添加spring-orm和aspectjweaver jar包

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- dataSource用于制定数据源,ref引用上面定义的ID为dataSource的Bean -->
        <property name="dataSource" ref="dataSource" />
        <!-- 指定seesionFactory查找配置文件的位置 另一种做法如下,如要制定多个配置文件必须手动添加 <property name="mappingResources">
            <list> <value>com/example/domain/Student.hbm.xml</value> </list> </property> -->
        <property name="mappingLocations">
            <list>
                <value>classpath:**/*.hbm.xml</value>
            </list>
        </property>
        <!-- 配置方言等属性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
            </props>
        </property>
    </bean>

3. 配置Dao和Service,为做简化只配置了Dao层,没有写Service层

在Spring中配置Dao如下:

<bean id="studentDao" class="com.example.dao.StudentDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

4. 配置声明式事务(Declarative Transaction),基于Spring的AOP特性

<!-- 事务管理器,Spring为Hibernate提供了事务管理类HibernateTransactionManager -->
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <!-- 定义事务的AOP切入点 -->
    <aop:config>
        <aop:pointcut id="productServiceMethods" expression="execution(* com.example.dao.*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods" />
    </aop:config>
    <!-- 配置事务属性 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="*" propagation="SUPPORTS" read-only="true" />
        </tx:attributes>
    </tx:advice>

至此,Spring与Hibernate的整合完成。

(三)Spring2与Struts2的整合

除了spring-context, struts-core jar包外,还需要struts-spring-plugin包

1. 在web.xml中配置监听器并提供spring配置文件的位置参数

<!-- ContextLoaderListener可以在tomcat启动时初始化Spring容器,从而完成Spring的加载 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- contextConfigLocation 提供了读取Spring配置文件的路径 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext-*.xml</param-value>
    </context-param>

2. 将Action配置在Spring容器中

Spring中对Action的配置如下:

<bean id="studentAction" class="com.example.web.action.StudentAction">
        <property name="studentDao" ref="studentDao"></property>
    </bean>

struts.xml中Action的配置如下:

<!-- Action对应的class要写成配置在Spring中的 -->
        <action name="add" class="studentAction" method="add">
            <result>/hello.jsp</result>
        </action>

至此,SSH框架的整合过程全部完成。

时间: 2024-10-26 06:49:13

J2EE SSH框架整合教程的相关文章

dwr与ssh框架整合教程

(1)dwr与ssh框架整合教程dwr框架介绍. DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开 发人员开发包含AJAX技术的网站.它可以允许 在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.它包含两个主要的部 分:允许JavaScript从WEB服务器上一 个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站 开发人员轻松地利用获取的数

J2EE进阶(十一)SSH框架整合常见问题汇总(二)

J2EE进阶(十一)SSH框架整合常见问题汇总(二) 问题8 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Boolean      解决 数据库中userdetail表的映射文件如下,可见xb字段数据类型为boolean类型,而自己在userdetail模型类中定义的类型为String类型.为此可以得出这样的结论.模型类中的数据及类型必须与数据表映射文件中的字段信息保持一致.应该可以同时生成

【课程分享】jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)

我的qq是2059055336,对这个课程有兴趣的可以加我qq联系. 课程下载地址:链接:http://pan.baidu.com/share/link?shareid=395438909&uk=3611155194 密码:mlvl 课程下载地址:http://www.kuaipan.cn/file/id_192202874577496484.htm?source=1 一.本课程是怎么样的一门课程(全面介绍)    1.1.课程的背景 jQuery 2.0 正式版发布,不在支持 IE 6/7/8

用myecplise自带工具实现对SSH框架整合

之前搭建ssh环境的,都是先要引入一堆jar包,一下没整明白就会出现jar包冲突的问题,在这里,我们使用myecplise自带的工具,实现jar包的依赖和配置文件的生成. 我们用的到的工具是:myecplise2014 第一步:新建一个web project 第一步:添加项目所依赖的jar包 1.添加struts所依赖的jar包 完成后,在src目录下可以发现struts.xml 2.添加spring所依赖的jar包 完成后,可以在src目录下发现applicationContext.xml 3

SSH框架整合过程总结

---------------------siwuxie095 SSH 框架整合过程总结 (一)导入相关 jar 包(共 41 个) 1.导入 Spring 的核心 jar 包和日志相关的 jar 包(6 个) Commons Logging 下载链接: http://commons.apache.org/proper/commons-logging/download_logging.cgi LOG4J 下载链接: https://www.apache.org/dist/logging/log4

SSH框架整合的其它方式

--------------------siwuxie095 SSH 框架整合的其它方式 1.主要是整合 Spring 框架和 Hibernate 框架时,可以不写 Hibernate 核心配置文件:hibernate.cfg.xml 2.把Hibernate 核心配置文件中的配置全都转移到 Spring 核心配置文件中 3.具体实现 applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?&g

SSH框架整合

ssh框架整合步骤如下 提示:myeclipse环境.工程环境.tomcat环境的jdk保持一致 1.新建一个工程,把工程的编码为utf-8 2.把jsp的编码形式改成utf-8 3.把jar包放入到lib下 4.建立三个src folder src 存放源代码 config 存放配置文件 hibernate 存放hibernate的配置文件 spring 存放spring的配置文件 struts 存放struts的配置文件 struts.xml test 存放单元测试 5.在src下建立包 c

jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)

我的qq是2059055336,对这个课程有兴趣的可以加我qq联系. 一.本课程是怎么样的一门课程(全面介绍)    1.1.课程的背景 jQuery 2.0 正式版发布,不在支持 IE 6/7/8 浏览器.因此该版本更小.更快.       为了提高现代社会人们的办公效率,满足人们自动化办公的需要,我们开发了这套稳定可靠.操作方便.安全有效的MyOffice系统     1.2.课程内容简介       本课程全面详细的介绍jQuery2.0以及OA办公自动化系统的开发流程.其中重点详细的介绍

ssh框架整合实例

MyEclipse开发SSH(Struts+Spring+Hibernate)入门 Spring技术   2009-02-03 15:59   阅读328   评论0 字号: 大大  中中  小小 2008-01-31 01:31 (本文参考自 oksonic 的"Struts+Spring+Hibernate练习(完整)") 源码下载:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2857703 注意:这个实例要加入