Struts2、Spring4、Hibernate4整合 超详细教程

Struts2、Spring4、Hibernate4整合实例-下载



项目目的:
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4)搭建项目架构原型。
项目架构原型:Struts2 + Spring4.0+ Hibernate4.2.4。
项目特色:同时使用了Struts2、Spring4、Hibernate4、log4j等库或框架,搭建一个最基本的项目原型。

加入 Spring

  • 加入Spring 所需 jar 包

  • 配置 web.xml 文件

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> </web-app>
  • 加入 Spring 的配置文件[ applicationContext.xml ]
 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> </beans>

applcationContext.xml


加入Hibernate

  • 加入Hibernate所需jar包

  • 加入 hibernate.cfg.xml 文件, 在其中配置 hibernate 的基本属性
 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 配置 hibernate 的基本属性 --> <!-- 方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 是否显示及格式化 SQL -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property> <!-- 生成数据表的策略 -->
<property name="hibernate.hbm2ddl.auto">update</property> <!-- 二级缓存相关 -->
<!-- ....... -->
</session-factory> </hibernate-configuration>

hibernate.cfg.xml

  • 和 Spring 进行整合

加入 c3p0 和 MySQL 的驱动

新建db.properties

 jdbc.user=root
jdbc.password=1230
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8 jdbc.initPoolSize=5
jdbc.maxPoolSize=10

db.properties

在 Spring 的配置文件中配置: 数据源, SessionFactory, 声明式事务

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <context:annotation-config />
<context:component-scan base-package="com" /> <!-- 导入资源文件 -->
<context:property-placeholder location="classpath:db.properties"/> <!-- 配置 C3P0 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean> <!-- 配置 SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<property name="mappingLocations" value="classpath:com/entities/*.hbm.xml"></property>
</bean> <!-- 配置 Spring 的声明式事务 -->
<!-- 1. 配置 hibernate 的事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <!-- 2. 配置事务属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="lastNameIsValid" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice> <!-- 3. 配置事务切入点, 再把事务属性和事务切入点关联起来 -->
<aop:config>
<aop:pointcut expression="execution(* com.service.*.*(..))" id="txPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config> </beans>

applicationContext.xml

  • 小测试

新建实体类Test.java

 package com.entities;

 import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; @Entity
@Table(name = "test")
public class Test { @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;//主键
private String name; public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }

Test.java

hibernate.cfg.xml 添加

    <session-factory>
<!-- 以上 ...-->
<mapping class="com.entities.Test"></mapping>
</session-factory>

如果成功,数据库内自动生成Test表


加入 Struts2

  • 加入 jar 包: 若有重复的 jar 包, 则需要删除版本较低的.

  • 在 web.xml 文件中配置 Struts2 的 Filter
  <!-- 配置 Struts2 的 Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

web.xml

  • 加入 Struts2 的配置文件,新建struts.xml
 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="test">
<result>index.jsp</result>
</action> </package> </struts>

struts.xml

最新文章

  1. 【记录】AutoMapper Project To OrderBy Skip Take 正确写法
  2. Win 播放器
  3. 【如何快速的开发一个完整的iOS直播app】(原理篇)
  4. 烂泥:更换ESXI5.0管理网卡及管理IP地址
  5. ${param.origin}
  6. Java中XML格式的字符串4读取方式的简单比较
  7. PHP学习(三)----面向对象
  8. Android屏幕分辨率详解(VGA、HVGA、QVGA、WVGA、WQVGA)
  9. 深入浅出 RPC - 浅出篇
  10. js 两个日期比较相差多少天
  11. RHEL6.2 ORACLE11G
  12. java.security.NoSuchAlgorithmException: AES KeyGenerator not available
  13. WPF编程,C#中对话框自动关闭的一种方法。
  14. google云使用记录
  15. Coding和Git的环境搭建
  16. NHibernate 错误
  17. [na]pc加入域认证细节
  18. Qt-QML-Canvas-雷达扫描仪表简单
  19. hdu 4276 树形dp
  20. struts2 转发、重定向概述

热门文章

  1. Android 判断当前网络连接类型
  2. System.Web.Http.Tracing 在webapi里面应用
  3. Seek the Name, Seek the Fame
  4. Python 命令行非阻塞输入
  5. Introduction to Web Services
  6. LeetCode题目答案索引
  7. sqlserver2012的审计功能的相关理解
  8. input上传文件显示图片缩略图
  9. 第二个参数(那个 properties)确定你将如何使用这个特性值
  10. SKViedoNode类