一、前言
由于在实际开发中,并不会只是单独使用SSM框架中的某一个,因此如何整合这三个框架是非常重要的。
本文主要总结如何对SSM框架进行整合。
整合说明:SSM整合可以使用多种方式,咱们会选择 XML + 注解的方式 。
二、整合的大致步骤
1、搭建整体项目环境
2、搭建spring环境
3、搭建springMVC环境
4、使用spring整合springMVC
5、搭建mybatis环境
6、使用spring整合mybatis
三、环境准备
本文使用一个和账户相关的项目,实现查询所有和添加账户的功能。
(一)创建数据库和表
1 | create database ssm; |
(二)创建maven工程
这个非常简单,省略。
注意一下如何解决创建maven项目较慢的情况:
在创建Maven项目时加上archetypeCatalog=internal参数,即添加如下键值对:
1 | archetypeCatalog |
(三)导入依赖坐标
1 | <properties> |
(四)编写实体类
1 | public class Account implements Serializable { |
(五)编写持久层接口
IAccountDao.java:
1 | public interface IAccountDao { |
(六)编写业务层接口
IAccountService.java:
1 | public interface IAccountService { |
四、搭建spring框架
(一)编写spring配置文件并导入约束
1 |
|
(二)使用注解配置持久层和业务层
AccountDaoImpl.java:
1 | "accountDao") ( |
AccountServiceImpl.java:
1 | "accountService") ( |
(三)测试spring环境能否正常运行
1 | public class Test01Spring { |
运行结果如下:
五、搭建springMVC框架
(一)在web.xml中配置核心控制器
打开WEB-INF/web.xml文件,在该文件中配置核心控制器并且配置过滤器解决中文乱码问题,如下:
1 |
|
(二)编写springmvc配置文件
在resources目录下创建springmvc.xml配置文件,并添加如下配置:
1 |
|
(三)编写页面和controller
jsp代码:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> |
controller代码:
1 |
|
运行结果如下:
六、整合SpringMVC框架
首先,我们需要知道的是如何才算整合成功呢?
其实,因为我们是需要在表现层中调用业务层对象看,因此只要我们能够在我们的controller类的方法中通过业务层对象调用业务层的方法,那么就算整合成功。
但是,由于我们的业务层对象是在我们的spring配置文件中通过bean标签配置创建的,而该配置文件目前却没有被加载,所以业务层对象是不会被创建的,ioc的容器中更不会有业务层对象,从而导致我们不能再controller中通过注入的方式使用业务层对象。
因此,整合springMVC的关键就是如何让spring的配置文件在项目被启动之后就能够被加载。
通过思考,我们肯定就会想到使用监听器。其实,解决办法就是使用监听器。实现步骤如下:
(一)配置监听器实现启动服务创建容器
在WEB-INF/web.xml文件中配置监听器,配置后的文件如下:
1 |
|
(二)在controller中注入service对象
1 |
|
七、搭建mybatis框架
(一)为IAccountDao接口添加注解
IAccountDao.java:
1 | public interface IAccountDao { |
(二)编写 SqlMapConfig 配置文件
1 |
|
(三)测试mybatis环境能否正常运行
1 | /** |
八、整合mybatis框架
同样,如何才算整合成功呢?
因为我们的目的是能够在service中使用dao的代理对象,那么必须确保dao代理对象能够加入到ioc容器中。但是dao的代理对象其实是通过SqlSession对象创建的,而SqlSession又是通过SqlSessionFactory对象创建而来的,因此关键就是在创建dao代理对象之前,先创建SqlSessionFactory对象,然后在通过一系列的操作,创建dao的代理对象并加入到ioc容器中。
整合思路:
把 mybatis 配置文件(SqlMapConfig.xml)中内容配置到 spring 配置文件中
因此,可通过如下步骤进行整合:
#####(一)在spring的配置文件中添加代替mybatis配置的内容
添加后的配置文件(SqlMapConfig.xml)如下:
1 |
|
(二)声明事务
将事务声明添加后的配置文件(SqlMapConfig.xml)如下:
1 |
|
九、测试整合效果
(一)整合后的项目结构如下:
(二)测试
1、index.jsp
在webapp目录下,有一个index.jsp:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
2、AccountController.java
对AccountController类中的代码进行如下调整:
1 |
|
3、AccountServiceImpl.java
对AccountServiceImpl类中的代码进行如下调整:
1 | "accountService") ( |
4、list.jsp
代码如下:
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> |
5、测试结果
数据库中的数据如下:
查询所有操作:
进行添加账户操作:
添加后进行查询显示的页面:
添加后数据库中的数据:
十、总结
在进行SSM的整合时,只要先配置好spring环境后,在分别进行SpringMVC和Mybatis的环境搭建,并进行测试。
在测试都没有问题了之后,分别使用Spring进行整合即可。
其他参考文档:SSM整合——基于 IDEA Maven项目的 Spring + SpringMVC + MyBatis MVC架构整合
Java新手,若有错误,欢迎指正!