所使用的Jar包:

Hibernate:

Spring(使用MyEclipse自动导入框架功能)

Struts2:

注解包和MySql驱动包:

1、配置Hibernate和Spring:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><context:annotation-config /><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url"value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8" /><property name="username" value="root" /><property name="password" value="" /><!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --><property name="initialSize" value="1" /><!--连接池中保留的最大连接数。Default: 15 --><property name="maxActive" value="500" /><!--最大空闲值,当经过一段峰值以后,连接会被释放掉一部分,直到释放到maxidle --><property name="maxIdle" value="2" /><!--最小空闲值 当空闲的连接数小于阀值时,连接池会主去的去申请一些连接 --><property name="minIdle" value="1" /></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" ><property name="dataSource" ref="dataSource" /><property name="mappingResources"><list><value>cn/raffaello/hbm/Person.hbm.xml</value></list></property><property name="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.MySQL5Dialecthibernate.hbm2ddl.auto=updatehibernate.show_sql=truehibernate.format_sql=false</value></property></bean><bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><tx:annotation-driven transaction-manager="txManager"/><bean id="personIDao" class="cn.raffaello.dao.impl.PersonDaoImpl" /><bean id="personIService" class="cn.raffaello.service.impl.PersonServiceImpl"><property name="personIDao" ref="personIDao" /></bean>
</beans>

2、新建实体和映射文件:

public class Person {public Person(){}public Person(String name) {super();this.name = name;}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;}
}
<hibernate-mapping package="cn.raffaello.model"><class name="Person" table="PERSON"><id name="id" column="ID"><generator class="native" /></id><property name="name" column="NAME" /></class>
</hibernate-mapping>

3、新建DaoBean,并在Bean中实现部分方法,使用@Resource给SessionFactory注入:

public interface PersonIDao {void add(Person person);void update(Person person);Person getById(Integer id);List<Person> getPersons();
}
public class PersonDaoImpl implements PersonIDao {@Resource(name="sessionFactory")private SessionFactory sessionFactory;@Overridepublic void add(Person person) {sessionFactory.getCurrentSession().persist(person);}@Overridepublic void update(Person person) {sessionFactory.getCurrentSession().merge(person);}@Overridepublic Person getById(Integer id) {return (Person)sessionFactory.getCurrentSession().get(Person.class, id);}@SuppressWarnings("unchecked")@Overridepublic List<Person> getPersons() {return sessionFactory.getCurrentSession().createQuery("from Person").list();}}

5、新建ServiceBean,并实现部分方法;在ServiceBean的头部添加@Transactional 注解,使用该ServiceBean纳入Spring事务管理;

public interface PersonIService {void add(Person person);void update(Person person);Person getById(Integer id);List<Person> getPersons();
}
@Transactional
public class PersonServiceImpl implements PersonIService {private PersonIDao personIDao;@Overridepublic void add(Person person) {personIDao.add(person);}@Overridepublic void update(Person person) {personIDao.update(person);}@Transactional(readOnly=true)@Overridepublic Person getById(Integer id) {return personIDao.getById(id);}@Transactional(readOnly=true)@Overridepublic List<Person> getPersons() {return personIDao.getPersons();}public PersonIDao getPersonIDao() {return personIDao;}public void setPersonIDao(PersonIDao personIDao) {this.personIDao = personIDao;}}

6、测试Spring和Hibernate的代码:

public class test {private static PersonIService personIService;@BeforeClasspublic static void init(){ApplicationContext cxt=new ClassPathXmlApplicationContext("beans.xml");personIService=(PersonIService)cxt.getBean("personIService");}@Testpublic void test() {personIService.add(new Person("克露丝"));personIService.add(new Person("Json"));personIService.add(new Person("布尔曼"));personIService.add(new Person("HHH"));personIService.add(new Person("汤姆"));}@Testpublic void testUpdate(){Person person=personIService.getById(1);person.setName("汉克丝 hankesi");personIService.update(person);}@Testpublic void testList(){List<Person> list=personIService.getPersons();for(Person per : list){System.out.println(per.getName());}}
}

7、整合Struts2+Spring+Hibernate,将下面代码添加到Web.xml中:

<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param><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>

8、在Struts.xml中 进行如下配置:

   <constant name="struts.118n.encoding" value="UTF-8" />  <!-- Action 后缀 --><constant name="struts.action.extension" value="do,action" />  <!-- 设置浏览器是否缓存静态内容,默认值为true,开发环境下建议设置为false -->  <constant name="struts.serve.static.browserCache" value="false" />  <!-- 当Struts 修改文件以后,是否重新加载该文件,默认为false,推荐开发环境下设置为true -->  <constant name="struts.configuration.xml.reload" value="true" />  <!-- 开发模式下可以打印更详细的错误信息 -->  <constant name="struts.devMode" value="false" />  <!-- 默认视图主题  -->  <constant name="struts.ui.theme" value="simple" />  <!-- 与Spring集成是,指定有Spring创建Action对象 -->  <constant name="struts.objectFactory" value="spring" /> <package name="raffaello" namespace="/raffaello" extends="struts-default"><action name="main_*" class="cn.raffaello.action.MainAction" method="{1}"><result name="message">/WEB-INF/pages/message.jsp</result><result name="list">/WEB-INF/pages/list.jsp</result></action></package>

9、新建Action:MainAction:

public class MainAction {private String message;private Person person;private PersonIService personIService;public String hello(){setMessage("struts2 测试消息!");return "message";}public String save(){if(person!=null && !person.getName().equals("")){personIService.add(person);setMessage("添加成功");}else{setMessage("对象为空");}return "message";}public String list(){List<Person> list=personIService.getPersons();HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute("PersonList", list);return "list";}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Person getPerson() {return person;}public void setPerson(Person person) {this.person = person;}public PersonIService getPersonIService() {return personIService;}public void setPersonIService(PersonIService personIService) {this.personIService = personIService;}}

10、添加测试代码和获取的测试代码:

 <form action="/SSH2/raffaello/main_save.do" method="post">添加人员     <a target="_blank" href="/SSH2/raffaello/main_list.do">人员列表</a><hr />姓名:<input type="text" name="person.name" /><input type="submit" value="提交"></form>
<span style="white-space:pre">  </span><c:forEach items="${PersonList}" var="per">${per.name}</c:forEach>

转载于:https://www.cnblogs.com/raphael5200/p/5114731.html

Spring、Struts2+Spring+Hibernate整合步骤相关推荐

  1. Struts2+Hibernate4开发学生信息管理功能--(二)Struts2和Hibernate整合

    Struts2+Hibernate4开发学生信息管理功能--(二)Struts2和Hibernate整合 1. 创建structs2和hibernate用户类库 (1)在Eclipse中加载jar包 ...

  2. java spring hiberate_Spring+SpringMVC+Hibernate整合实例讲解

    使用Maven构建项目,用pom.xml引入相应jar,配置以下文件 创建spring.xml: xmlns="http://www.springframework.org/schema/b ...

  3. SSH之IDEA2017整合Struts2+Spring+Hibernate

    摘要 IDEA无疑是Java编程的利器,在下面我们将介绍如何使用IDEA来整合SSH(Struts2 + Spring + Hibernate):介绍將分为三个部分来讲,分别是新建工程,Spring引 ...

  4. SSH框架整合过程(Struts2+Spring+Hibernate)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.NET/qq_25827845/article/details/53929601 冷血之心的博客) 在学习java框架的过程中,我总结 ...

  5. spring+struts2+hibernate整合

    本文介绍   1.Struts2+Spring2.5+Hibernate3.3的整合  2.采用单元测试  3.加入了lob类型的操作配置  4.介绍oralce驱动 本文采用oracle11g  5 ...

  6. Spring整合Hibernate的步骤

    为什么要整合Hibernate? 1.使用Spring的IOC功能管理SessionFactory对象  LocalSessionFactoryBean 2.使用Spring管理Session对象   ...

  7. Struts2、Hibernate、Spring整合所需要的jar包

    Struts2.Hibernate.Spring整合所需要的包: Struts2: struts2-core-2.0.14.jar  -- Struts2的核心包. commons-logging-1 ...

  8. 【struts2+spring+hibernate】ssh框架整合开发

    SSH框架整合 1 Struts2+Spring+Hibernate导包 Struts2导入jar包: * struts2/apps/struts2-blank.war/WEB-INF/lib/*.j ...

  9. java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...

    详解JAVAEE--SSH三大框架整合(spring+struts2+hibernate) 发布时间:2020-09-17 13:34:05 来源:脚本之家 阅读:64 作者:kent鹏 一.整合原理 ...

最新文章

  1. 阿里云助力合作伙伴帮助政府、企业体验云计算大数据魅力!
  2. Linux的复制命令的路径写法
  3. go日期和时间相关函数使用示例
  4. Android Studio 3.4增可视化资源管理工具 可管理和预览项目资源
  5. Linux 环境变量PATH设置和查看etc/profile和bashrc的区别
  6. 鼠标问题:鼠标拖拽不灵敏,准备复制拖动的半截就断了
  7. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础
  8. mysql 5.6.15安装图解_Windows8下mysql 5.6.15 安装配置方法图文教程
  9. ZBrush for Mac的插图技巧
  10. 为什么有人把《海贼王》当作人生信条
  11. 远程桌面管理工具RDCMan
  12. 软考网络工程师学习笔记
  13. 《汉魏风云》1、速度与激情——无双吕布的悲喜人生
  14. TwinCAT 3 EL7211模块控制倍福伺服
  15. 使用键盘设置桌面计算机图标的显示不出来,显示桌面,小编教你显示桌面图标不见了如何恢复...
  16. webx框架 实现文件上传保存服务器 解析
  17. 黑客急于利用微软的零日漏洞
  18. python深度讲解_《深度剖析CPython解释器》21. Python类机制的深度解析(第五部分): 全方位介绍Python中的魔法方法,一网打尽...
  19. java一键配置环境_JDK一键安装,配置环境
  20. Second-Order Cone Programming(SOCP) 二阶锥规划

热门文章

  1. 辗转相除法详解(C语言实现)
  2. 辗转相除法的原理,一看就懂,一学就会
  3. 马尔科夫不等式和坎泰利不等式的证明
  4. markdown表格内如何进行换行
  5. Android GNSS 模块分析(四)HAL 层
  6. 知三点求平面 || 点到平面的距离
  7. 宏定义和函数有何区别
  8. emacs org初学者指南
  9. 技术管理工作中的三个原则
  10. 毕业设计有哪些可借鉴的 GitHub 项目?