java ssh整合_SSH框架整合(Spring整合Struts2,和Spring整合Hibernate)

SSH整合原理:

8033582b6e866f39eb5349f30dc7aa73.png

导包:共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进行绑定。

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

fc18227f0e511e3c3b43217c3ab3ce44.png

准备Spring配置文件:

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

Struts2整合Web项目:

编写Action:

配置struts.xml:src目录下

35b5ad14821f976854c49a9c7d82a7ac.png

配置入口过滤器:

d04f8b96f431c2cd3f7aba924f8fd26f.png

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容器:

705d8464e3063f965f635761642a64ce.png

修改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中直接配置:

567af8735ed7f7922de85818148f5590.png

配置C3P0连接池:

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

a65a44e96b116dfd5fb146d88ef0c075.png

在spring中读取db.properties:

0f607674b700316b6ece4bb13b27b72c.png

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

6ab82b669c88279d69b5f58af56adc1e.png

将C3P0连接池注入sessionFactory:

b2ab2a4a7733a62ef84435bce4f28d67.png

将Service配置到Spring容器:

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

将Dao对象交给Spring管理:

50622478c490dd7e19e5835b1f3d90cb.png

创建Service对象

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

5f36ba90e62ed92b78623ce281345696.png

测试Service。

AOP事务管理:

配置transactionManager:

4d1e79e563b1516889b1a1ff03d72d48.png

事务管理配置方式:

注解:

开启注解"开关":

f4093d80202aa7957ebeb6ea9211781a.png

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

a02e026c6b7ee1c6e2771ee4d1e2ed68.png

XML:

配置事务通知:

36056053e064dde9275cbbaaa1462ddf.png

配置切面(织入):

c644dae950245d2dbb38e5a732792878.png

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

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

问题解决:

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

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

配置过滤器:

8bcfee11bad40f81e81df4d21db63d86.png

未完待续……

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值