前言:
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大联盟
领取专属 10元无门槛券
私享最新 技术干货