代码和jar下载地址:http://download.csdn.net/detail/u012648071/8139327 导入即可运行
struts2+spring+hibernate整合
一:建立web工程
二:导入SSH的jar包(log4j.properties文件)
三:框架搭建
1:Hibernate(持久层)
(1)在cn.qq5101437.ssh.domain下创建Person类
public class Person implements java.io.Serializable {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(2)在cn.qq5101437.ssh.domain下创建Person类对应的映射文件Person.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.qq5101437.ssh.domain.Person" table="person">
<id name="id" type="integer" column="id">
<generator class="increment"></generator>
</id>
<property name="name" type="string" column="name"></property>
</class>
</hibernate-mapping>
(3)在src下创建hibernate的配置文件,hibernate.cfg.xml
<?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>
<!-- 操作数据库的配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testspring?useUnicode=true&characterEncoding=utf-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 其他的配置 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<!-- 添加映射文件 -->
<mapping resource="cn/itcast/ssh/domain/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
(4)使用junit测试
public class TestHibernate {
@Test
public void save(){
Configuration configuration = new Configuration();
//加载hibernate的映射文件和配置文件
configuration.configure();//默认加载类路径下的hibernate.cfg.xml
SessionFactory sf = configuration.buildSessionFactory();
Session s = sf.openSession();
Transaction tr = s.beginTransaction();
//执行保存
Person p = new Person();
p.setName("武大");
s.save(p);
tr.commit();
s.close();
}
}
2:struts2(控制层MVC结构)
(1)在cn.qq5101437.ssh.action中创建Action类
@SuppressWarnings("serial")
public class PersonAction extends ActionSupport implements ModelDriven<Person> {
private Person person = new Person();
public Person getModel() {
return person;
}
public String save(){
System.out.println("欢迎访问PersonAction!"+person.getName());
return SUCCESS;
}
}
(2)在src下创建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>
<!-- 设置开发模式,因为控制台显示更多的错误信息 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 配置UI主题,为简单主题,去掉struts2提供的样式 -->
<constant name="struts.ui.theme" value="simple"></constant>
<package name="person" namespace="/person" extends="struts-default">
<action name="personAction_*" class="cn.qq5101437.ssh.action.PersonAction" method="{1}">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
(3)在web.xml中添加过滤器(核心)
<!-- 配置struts2的核心过滤器,这是struts运行的核心 -->
<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>
(4)在WebRoot添加使用person.jsp进行测试
3:spring与hibernate整合
(1)在cn.qq5101437.ssh.service中创建接口和实现类
【1】
public interface IPersonService {
void savePerson(Person person);
}
【2】
public class PersonServiceImpl implements IPersonService {
private IPersonDao personDao;
public void setPersonDao(IPersonDao personDao) {
this.personDao = personDao;
}
/**保存人员信息*/
public void savePerson(Person person) {
personDao.savePerson(person);
}
}
(2)在cn.qq5101437.ssh.dao中创建接口和实现类
【1】
public interface IPersonDao {
void savePerson(Person person);
}
【2】
public class PersonDaoImpl implements IPersonDao {
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
/**保存人员信息*/
public void savePerson(Person person) {
hibernateTemplate.save(person);
}
}
(3)在Action中添加代码操作Service(遗留问题:加载beans.xml慢)
public String save(){
//System.out.println("欢迎访问PersonAction!"+person.getName());
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
IPersonService personService = (IPersonService) ac.getBean("personService");
//执行保存
personService.savePerson(person);
return SUCCESS;
}
(4)在src下创建beans.xml(spring容器)
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 创建SessionFactory工厂,它是spring整合hibernate的核心 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 加载项目中hibernate.cfg.xml -->
<property name="configLocation">
<value>
classpath:hibernate.cfg.xml
</value>
</property>
</bean>
<!-- 声明hibernate模板,用来在Dao中操作数据库,需要注入SessionFactory工厂 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- Service层对象 -->
<bean id="personService" class="cn.qq5101437.ssh.service.impl.PersonServiceImpl">
<property name="personDao" ref="personDao"></property>
</bean>
<!-- Dao层对象 -->
<bean id="personDao" class="cn.qq5101437.ssh.dao.impl.PersonDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean>
<!-- 声明式事务处理(XML方式) -->
<!-- 配置事务管理器(切面) -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 切面关联通知(通知即事务处理) -->
<tx:advice id="txManagerAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
<tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
<tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" read-only="false"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 通知关联切入点(即事务操作业务层) -->
<aop:config>
<aop:pointcut id="servicePointcut" expression="execution(* cn.qq5101437.ssh.service..*.*(..))"/>
<aop:advisor advice-ref="txManagerAdvice" pointcut-ref="servicePointcut"/>
</aop:config>
</beans>
(5)使用person.jsp完成测试
4:spring与struts2整合
(1)添加struts与spring整合的jar包,struts2-spring-plugin-2.3.3.jar
(2)注释Action类中的save方法,加载spring容器的配置
//ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
//IPersonService personService = (IPersonService) ac.getBean("personService");
(3)修改Action类,添加IPersonService personService属性:
private IPersonService personService;
public void setPersonService(IPersonService personService) {
this.personService = personService;
}
(4)在web.xml容器中添加:
<!-- 当web容器启动的时候,自动加载spring容器,避免每次访问Action的时候加载 -->
<!-- 找到spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<!-- 使用spring通过的监听,用来加载spring容器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(5)spring容器中创建Action的实例
<!--
由于struts与spring整合,struts的Action对象的生命周期由spring来维护
spring创建Action对象生命周期,默认是单实例
而struts创建Action是多实例
* 所以要添加scope="prototype",否则获取的值会有问题
-->
<bean id="personAction" class="cn.qq5101437.ssh.action.PersonAction" scope="prototype">
<property name="personService" ref="personService"></property>
</bean>
(6)修改struts.xml的文件:将action中的class由spring来维护
<!-- struts与spring整合的配置,在struts-plugin.xml中有体现 -->
<constant name="struts.objectFactory" value="spring" />
<package name="person" namespace="/person" extends="struts-default">
<!-- struts与spring整合后,action的class的属性值,可以命名spring容器定义Action的id的属性值 -->
<action name="personAction_*" class="personAction" method="{1}">
<result name="success">/success.jsp</result>
</action>
</package>
(7)整体测试,测试person.jsp
代码和jar下载地址:http://download.csdn.net/detail/u012648071/8139327
相关推荐
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...
这本"Struts2+Spring3+Hibernate框架技术精讲与整合案例"PDF教程,旨在帮助开发者深入理解和实践这三大框架的集成应用。 Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,提供视图...
12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和Hibernate的整合方式 12.6.2 编写用户注册画面regedit.jsp 12.6.3 编写用户登录画面login.jsp 12.6.4 编写注册控制器RegeditAction.java ...
这个“Struts 2+Spring 3+Hibernate框架技术精讲与整合案例”提供了详尽的教程和源码,旨在帮助开发者深入理解和实践这些框架。 首先,让我们来详细探讨每个框架的核心功能: 1. **Struts 2**:Struts 2 是一个...
总的来说,这个"struts2+spring+hibernate整合小案例"涵盖了Web开发中重要的三层架构设计,通过实际操作这个DEMO,开发者可以深入理解这三大框架如何协同工作,为自己的Java Web开发能力提升打下坚实的基础。...
Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的技术栈,它们各自在应用开发中扮演着重要的角色。这个视频教程应该是针对初学者,旨在介绍如何将这些技术整合到一起,构建一个完整的Web应用程序...
2. **配置Spring-Hibernate整合**:Spring管理Hibernate SessionFactory,并通过事务管理器处理事务。在spring-context.xml中配置数据源、SessionFactory、事务管理器以及数据访问层的Bean。 3. **配置Action类**:...
这个项目是一个经典的Java Web应用程序开发案例,采用的技术栈是Struts2、Spring2和Hibernate3,这三大框架组合在一起,可以实现MVC(Model-View-Controller)架构,提供数据持久化、业务逻辑管理和前端交互的能力。...
这本书《轻量级Java_EE企业应用实战_Struts_2+Spring_3+Hibernate整合开发_第3版》应该会详细讲解这些知识点,并给出实际案例,帮助读者掌握这一整合技术栈的使用。阅读该书,读者可以了解到如何在实际项目中有效地...
在现代的Web应用程序开发中,Java Web框架的组合使用已经成为了一种常见的模式,特别是Struts 2、Hibernate、MyBatis和Spring这四个组件的整合,它们分别在MVC架构的不同层面发挥着关键作用。本课程围绕这个组合展开...
《轻量级Java+EE企业应用实战——Struts 2 + Spring + Hibernate整合开发》是针对Java企业级应用开发的一本实战指南,旨在帮助开发者掌握使用Struts 2、Spring和Hibernate三大框架进行高效集成开发的技术与技巧。...
### JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合 #### 概述 随着软件开发技术的不断进步,构建可复用、易于扩展并经过良好测试的软件组件变得尤为重要。在此背景下,Struts、Spring 和 Hibernate 这三大...
Java高级框架应用开发案例教程,主要关注的是Struts2、Spring和Hibernate这三大经典开源框架的整合开发,也称为SSH框架。这些框架是Java企业级应用程序开发中的核心工具,能够帮助开发者实现高效的MVC(Model-View-...
标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...
在Java Web开发中,SSH(Struts2、Spring3、Hibernate)是一种常见的企业级应用框架组合,它们各自承担着不同的职责,共同构建了一个强大的、灵活的后端开发平台。本实例旨在为新手提供一个轻量级的企业应用开发案例...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
Struts 2+Spring 3+Hibernate框架技术精讲与整合案例.pdf,各个章节源码可在本人主页下载,附带所需jar包,内容详细,更好的帮助大家学习SSH,因文件大小限制,pdf和源码只能分开上传
Struts2、Hibernate和Spring是Java企业级应用中常用的三个开源框架,它们分别负责MVC模式中的表现层、持久层和业务层管理。SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高...
此外,Spring还提供了JDBC模板和Hibernate整合,简化了数据库操作。在实战部分,你将了解如何配置Spring Bean,使用@Autowired注解进行依赖注入,以及如何设置事务管理。 3. **Hibernate框架**:Hibernate作为ORM...
以上是对Struts2+Spring3+Hibernate整合开发的概述,具体到第6章和第9章的内容,可能还包括更深入的实战案例和异常处理策略。在实际开发中,这些知识点的掌握能帮助开发者构建出高效、可维护的企业级应用。