您的位置:首页 > 编程语言 > Java开发

SSH框架整合(Spring整合Struts2,和Spring整合Hibernate)

2017-03-28 00:00 381 查看

SSH整合原理:





导包:共40个jar包,其中:40=41-1(重复)

Hibernate5(9):

hibernate解压目录/lib/required

struts2.3(14):

struts2解压目录/apps/blank.war(空白项目)

注意:struts2.3与hibernate5中有一个重复的jar包,将较低版本删除。

struts2-spring-plugin-xxx.jar (spring整合struts2),

一旦导入该包,struts2框架启动时就会寻找spring容器。如果找不到将会报错。所以在搭建框架时.如果导 入了该包.需要先配置spring。再配置struts。

spring4(17):

4+2;

spring-jdbc、spring-tx、spring-orm;

C3P0连接池、数据库驱动;

spring-aop、spring-aspects;

aop联盟、aspectJ织入;

spring-test、junit4;

spring-web(让spring容器的创建与项目的启动绑定)

web(1):

jstl.jar

Spring整合Web项目:

在Web项目启动时创建Spring容器,只创建一次

原理:spring提供了ApplicationContextListener.。ServletContext对象的创建与销毁监听器。

spring在监听器的监听创建ServletContext对象的方法中,创建了spring容器。

在监听器的销毁方法中关闭spring容器。

换句话讲,就是将spring容器的生命周期与ServletContext进行绑定。

配置监听器&指定配置文件路径:





准备Spring配置文件:

创建applicationContext.xml文件,src目录下,并导入约束(NameSpace)。

Struts2整合Web项目:

编写Action:

配置struts.xml:src目录下





配置入口过滤器:





Spring整合Struts2:

整合原理:

整合方式1(不使用):Action依然由struts2创建。Action对象中的依赖由Spring注入。

配置常量:

struts.objectFactory=spring,开启使用spring对象工厂

struts.objectFactory.spring.autoWire=name,使用spring容器自动注入依赖属性,根据属性名自动注入 依赖

自动注入属性:属性名与bean的name名一致,spring就可以自动注入属性。

整合方式2:由spring创建action以及组装依赖关系。struts2只负责从spring获取action

配置常量:struts.objectFactory=spring,开启使用spring对象工厂

将Action和Service配置到spring容器:





修改struts2中class属性:

Action中的class属性,填写完整类名,struts2会获得类并创建对象;

填写bean的name,struts2会从spring容器中获取对应的bean name的对象

单独配置Hibernate框架:

先创建实体类和映射文件。

主配置文件:必选配置(jdbc、方言)、可选配置(打印..)、导入映射文件。

注意:整合spring不配置current_session_context_class,spring在自己准备的sessionFactory中已经通 过ThreadLocal完成session与线程绑定;

也不配置C3P0连接池,会将C3P0连接池交给spring来管理

测试:配置

将SessionFactory交给Spring管理:

方式1(不使用):配置信息放在hibernate.cfg.xml中,然后在spring配置sessionFactory时,注入 hibernate的配置信息。

方式2:省略hibernatecfg.xml,在spring中直接配置:





配置C3P0连接池:

准备db.properties配置文件,键值对存放 数据库信息





在spring中读取db.properties:





配置C3P0连接池对象,并引用db.properties中的配置:





将C3P0连接池注入sessionFactory:





将Service配置到Spring容器:

创建Dao对象:在ssh整合环境中,推荐使用hibernate模板对象,HibernateDaoSupport。

将Dao对象交给Spring管理:





创建Service对象

将service对象配置到spring容器中:





测试Service。

AOP事务管理:

配置transactionManager:





事务管理配置方式:

注解:

开启注解"开关":





在Service类中使用注解管理事务:





XML:

配置事务通知:





配置切面(织入):





解决懒加载使用时的no-session问题:

首先,Hibernate查询优化:使用懒加载策略效率更高。

问题解决:

确保在JSP环境中session处于开启状态。

(Spring已实现)在使用session的service层不关闭session。将session的关闭转移到过滤器的后处理代码 中。

配置过滤器:





未完待续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaee spring ssh 框架