`
zhbinyou
  • 浏览: 4504 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2+spring+hibernate整合案例java

 
阅读更多

代码和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&amp;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

分享到:
评论

相关推荐

    Struts_2+Spring_3+Hibernate整合开发.part5.rar

     《轻量级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+Spring3+Hibernate框架技术精讲与整合案例"PDF教程,旨在帮助开发者深入理解和实践这三大框架的集成应用。 Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求,提供视图...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    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框架技术精讲与整合案例_pdf源码前半部分

    这个“Struts 2+Spring 3+Hibernate框架技术精讲与整合案例”提供了详尽的教程和源码,旨在帮助开发者深入理解和实践这些框架。 首先,让我们来详细探讨每个框架的核心功能: 1. **Struts 2**:Struts 2 是一个...

    struts2+spring+hibernate整合小案例

    总的来说,这个"struts2+spring+hibernate整合小案例"涵盖了Web开发中重要的三层架构设计,通过实际操作这个DEMO,开发者可以深入理解这三大框架如何协同工作,为自己的Java Web开发能力提升打下坚实的基础。...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频002

    Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的技术栈,它们各自在应用开发中扮演着重要的角色。这个视频教程应该是针对初学者,旨在介绍如何将这些技术整合到一起,构建一个完整的Web应用程序...

    Struts2+Spring3+Hibernate3整合项目案例

    2. **配置Spring-Hibernate整合**:Spring管理Hibernate SessionFactory,并通过事务管理器处理事务。在spring-context.xml中配置数据源、SessionFactory、事务管理器以及数据访问层的Bean。 3. **配置Action类**:...

    基于struts2+spring2+hibernate3的注册登陆

    这个项目是一个经典的Java Web应用程序开发案例,采用的技术栈是Struts2、Spring2和Hibernate3,这三大框架组合在一起,可以实现MVC(Model-View-Controller)架构,提供数据持久化、业务逻辑管理和前端交互的能力。...

    轻量级Java_EE企业应用实战_Struts_2+Spring_3+Hibernate整合开发_第3版

    这本书《轻量级Java_EE企业应用实战_Struts_2+Spring_3+Hibernate整合开发_第3版》应该会详细讲解这些知识点,并给出实际案例,帮助读者掌握这一整合技术栈的使用。阅读该书,读者可以了解到如何在实际项目中有效地...

    web框架PPT——Struts 2+Hibernate+MyBatis+Spring 网站开发案例课堂 书籍附带PPT课件

    在现代的Web应用程序开发中,Java Web框架的组合使用已经成为了一种常见的模式,特别是Struts 2、Hibernate、MyBatis和Spring这四个组件的整合,它们分别在MVC架构的不同层面发挥着关键作用。本课程围绕这个组合展开...

    轻量级Java+EE企业应用实战——Struts+2+Spring+Hibernate整合开发电子书3.pdf

    《轻量级Java+EE企业应用实战——Struts 2 + Spring + Hibernate整合开发》是针对Java企业级应用开发的一本实战指南,旨在帮助开发者掌握使用Struts 2、Spring和Hibernate三大框架进行高效集成开发的技术与技巧。...

    JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合

    ### JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合 #### 概述 随着软件开发技术的不断进步,构建可复用、易于扩展并经过良好测试的软件组件变得尤为重要。在此背景下,Struts、Spring 和 Hibernate 这三大...

    Java高级框架应用开发案例教程 Struts2+Spring+Hibernate

    Java高级框架应用开发案例教程,主要关注的是Struts2、Spring和Hibernate这三大经典开源框架的整合开发,也称为SSH框架。这些框架是Java企业级应用程序开发中的核心工具,能够帮助开发者实现高效的MVC(Model-View-...

    Struts+Spring+Hibernate开发实例.pdf

    标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...

    jsp开发实例:Struts2+Spring3+Hibernate整合开发

    在Java Web开发中,SSH(Struts2、Spring3、Hibernate)是一种常见的企业级应用框架组合,它们各自承担着不同的职责,共同构建了一个强大的、灵活的后端开发平台。本实例旨在为新手提供一个轻量级的企业应用开发案例...

    Struts2+Spring3+Hibernate

    《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。  《轻量级Java EE企业...

    Struts 2+Spring 3+Hibernate框架技术精讲与整合案例pdf

    Struts 2+Spring 3+Hibernate框架技术精讲与整合案例.pdf,各个章节源码可在本人主页下载,附带所需jar包,内容详细,更好的帮助大家学习SSH,因文件大小限制,pdf和源码只能分开上传

    10.6struts2+hibernate+spring的整合源代码

    Struts2、Hibernate和Spring是Java企业级应用中常用的三个开源框架,它们分别负责MVC模式中的表现层、持久层和业务层管理。SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高...

    Struts2+Spring+Hibernate框架技术与项目实战 源码(中)

    此外,Spring还提供了JDBC模板和Hibernate整合,简化了数据库操作。在实战部分,你将了解如何配置Spring Bean,使用@Autowired注解进行依赖注入,以及如何设置事务管理。 3. **Hibernate框架**:Hibernate作为ORM...

    struts2+spring3+hibernate整合开发(第6、9章)

    以上是对Struts2+Spring3+Hibernate整合开发的概述,具体到第6章和第9章的内容,可能还包括更深入的实战案例和异常处理策略。在实际开发中,这些知识点的掌握能帮助开发者构建出高效、可维护的企业级应用。

Global site tag (gtag.js) - Google Analytics