SSH整合

1.建项目,导包

 Struts2的jar包

  struts-2.3.24appsstruts2-blankWEB-INFlib*.jar
  struts2-convention-plugin-2.3.24.jar  ----Struts2的注解开发包。
  struts2-json-plugin-2.3.24.jar     ----Struts2的整合AJAX的开发包。
  struts2-spring-plugin-2.3.24.jar    ----Struts2的整合Spring的开发包。

 Hibernate的jar包

  Hibernate的开发的必须的包:hibernate-release-5.0.7.Finallib equired*.jar
  Mysql驱动:mysql-connector-java-5.1.21.jar
  日志记录:
  
  C3P0连接池:
  
   *****注意:Struts2Hibernate都引入了一个相同的jar包(javassist包)。删除一个******

 Spring的jar包

  IOC:
  
  AOP:
  
  其他:
  
  
  
  

2.Spring整合Struts2

 2.1在web.xml中配置Struts2的核心过滤器和Spring的监听器

  

 2.2建包建类

  

 2.3将Action和Service交给Spring管理

  需要引入struts-spring-plugin.jar*******************注意一定要把Spring管理的Action配置为多例
  

 2.4struts.xml的配置

  因为Action已经交由Spring管理,如果再在struts.xml中创建一个Action就会有两个,所以action标签的class要使用applicationContext.xml(Spring的配置文件)中action类的bean的id,这里通过struts-spring-plugin.jar这个包完成转换
  

3.Spring整合Hibernate

 这种整合方式不需要hibernate.cfg.xml文件,hibernate的配置信息全部在applicationContext.xml中

 3.1在applicationContext.xml中引入属性文件并配置连接池

  

 3.2配置sessionFactory以及Hibernate的相关配置

  

 3.3把Dao交给Spring管理并继承HibernateDaoSupport
  

 3.4事务

  使用注解事务
  

4.Hibernate模板的使用

 

5.解决延迟加载问题

 你的客户与联系人之间建立了关系(不管是一对多还是其他),你查询客户的时候想要显示联系人,可能会报no-session的错误,因为session是在Service层创建和销毁的,当你在web层使用某个对象的关联对象时,Hibernate因延迟加载会在这时发送sql语句查询关联对象,可是这时你的session已经关闭,所以就查询不到关联对象。除非你不使用延迟加载,但这样某些情况下性能就会得到降低。所以得把Session的创建和销毁提前到view层,使用过滤器完成操作,这个过滤器必须要写在Struts2核心过滤器之前。、

 

原文地址:https://www.cnblogs.com/zy-Luo/p/11037435.html