首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SSH框架整合教程

前言:

SSH:Struts2+Spring+Hibernate整合的web应用程序开源框架。

Struts2:封装MVC设计模式的框架,控制web应用的前后端交互流程。

Spring:IOC管理整合Struts2和Hibernate,AOP处理事务。

Hiernate:对JDBC进行封装,控制Java程序与数据库的交互。

它们之间的关系可以用下面这张图表示。

SSH框架优点:

1.Spring管理对象的实例化,把对象的创建和获取放到配置文件中,便于维护。

2.Hibernate避免了JDBC连接数据库的冗余繁杂。

3.各层分工明细,实现了各层之间的解耦,代码更加灵活。

接下来说如何整合,首先对SSH框架进行分析。

我们以对象为切入点分析,整个web应用程序,后台代码部分需要用到的对象大致如下。

Struts2:Controller。

Hibernate:SessionFactory。

业务层:Service,Dao。

调用关系如下图。

业务流程:

1.Struts2获取客户端请求,并映射到Controller。

2.Controller调用业务层代码,一直到DAO层。

3.DAO层与数据库交互的工作交给Hibernate。

4.最终返回模型数据到Controller层,再响应到客户端。

我们会发现上述业务流程并没有提到Spring,那么Spring框架的作用是什么?

Spring是设计层面的框架,负责管理和整合Struts2,Hibernate,或者说的直接一点就是创建Struts2和Hibernate需要用到的对象。

按照这个思路,SSH框架可以这么理解:由Spring创建对象,Struts2和Hibernate从IOC容器中获取需要的对象,进行调用,完成业务需求。

搞清楚这个关系后,我们来写代码完成SSH框架的整合。

我们采用基于注解的方式来开发,以查询Classes对象为例。

代码:

1.环境搭建

创建maven工程,配置SSH框架依赖jar包。

pom.xml

2.Hibernate需要的相关代码。

1.创建Classes实体类。

现在来配置spring.xml。

首先配置两个bean,分别是dataSource和sessionFactory,sessionFactory是Hibernate框架需要用到的对象,dataSource是创建sessionFactory所必需的对象。

同时自动将com.southwind包下的类扫描到IOC容器中。

Hibernate与Spring的整合完毕,现在来整合Struts2和Spring。

1.创建Sturts2的ClassesController类。

类名处添加@Controller注解,该类就会交给IOC容器来管理,创建对象,同时Controller类中需要调用Service对象,所以创建成员变量,使用@Autowired进行自动装载。

2.创建ClassesService接口以及ClassesServiceImpl实现类。

ClasseServiceImpl类名处添加@Service注解,该类也交给IOC容器管理创建对象。Service层中调用DAO,所以创建ClassesDAO成员变量,同样@Autowired自动装载。

3.创建ClassesDAO接口和ClassesDAOImpl实现类。

ClassesDAOImpl中需要调用sessionFactory对象,所以创建成员变量,并使用@Autowired自动装载,这样会自动将IOC容器中创建的sessionFactory对象赋值给该成员变量。

好了,Controller层,Service层,DAO层,数据库的对接已经完成,接下来就是将Controller层与客户端进行对象。

配置struts.xml。

action标签配置URL请求与Controller的映射,

name属性配置URL请求,class属性配置Controller对象,此时Controller已经交给Spring的IOC容器来创建,所有直接将IOC容器中的classesController对象与URL映射即可。

index.jsp中使用EL表达式展示模型数据信息。

SSH框架搭建完成,启动tomcat,打开浏览器输入URL请求进行测试。

成功。

代码写到这里,我们只是使用了Spring的IOC,AOP并没有使用到,AOP到底应用在哪里?项目中的事务管理会交给Spring的AOP来完成。

在spring.xml中添加事务管理配置。

SSH框架整合完成。

源码:

链接:https://pan.baidu.com/s/1o9NiA8M

密码:sskv

专业 热爱 专注

致力于最高效的Java学习

Java大联盟

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180201G0H3Y000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券