SSM框架整合步骤

一、整合思路

​ 1、创建Maven工程并使用webapp骨架

​ 2、搭建Spring框架

​ 3、搭建Springmvc框架,并使用Spring整合Springmvc

​ 4、搭建MyBatis框架,并使用Spring整合MyBatis

二、创建Spring框架

1、pom.xml修改及依赖注入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--编译Maven工程的JDK版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--锁定spring的版本-->
<spring.version>5.0.2.RELEASE</spring.version>
<slf4j.version>1.6.6</slf4j.version>
<!--日志-->
<log4j.version>1.2.12</log4j.version>
<!--mysql版本-->
<mysql.version>5.1.6</mysql.version>
<!--mybatis版本-->
<mybatis.version>3.4.5</mybatis.version>
</properties>

<dependencies>
<!-- spring -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>

2、创建用户表及javabean

​ 数据库创建如下:

1
2
3
4
5
6
7
CREATE DATABASE esp8266;
USE esp8266;
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
PASSWORD VARCHAR(30)
);

​ Javabean创建如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package cn.njut.domain;

/**
* @author Bijiaqin
* @date 2019/6/28 10:56
*/
public class User {
private Integer id;
private String username;
private String password;

@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

3、创建接口类和实现类

​ 编写UserDao.java和UserService.java接口类,Dao接口无需编写实现类,Service接口需要手动编写实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* 用户Dao接口,无需编写实现类
* @author Bijiaqin
* @date 2019/6/28 11:06
*/
public interface UserDao {
//查询用户,可用作登陆
public List<User> findUser();
//注册用户,此项目无需实现
public void registerUser(User user);
}

/**
* service接口需要手动编写实现类
* @author Bijiaqin
* @date 2019/6/28 11:12
*/
public interface UserService {
//查询用户,可用作登陆
public List<User> findUser();
//注册用户,此项目无需实现
public void registerUser(User user);
}

/**
* 业务层:实现对用户的操作,增删改查等,实现service接口功能
* @author Bijiaqin
* @date 2019/6/28 11:15
*/
public class UserServiceImpl implements UserService {
@Override
public List<User> findUser() {
return null;
}
@Override
public void registerUser(User user) {
}
}

4、控制器类编写

1
2
3
4
5
6
7
8
9
/**
* 用户控制类
* @author Bijiaqin
* @date 2019/6/28 11:20
*/
@Controller
@RequestMapping(path = "/user")
public class UserController {
}

5、Spring配置文件的创建

​ 在资源文件夹下创建aplicationContext.xml的配置文件,首先开启注解扫描,代码如下:

1
2
3
4
5
<!--开启注解扫描-->
<context:component-scan base-package="cn.njut">
<!--配置不扫注解的类,expression中Controller类的地址为全路径,idea环境下可用Ctrl+N快速查找-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>
</context:component-scan>

​ 在ServiceImpl中加注解

1
2
3
@Service("userService")
public class UserServiceImpl /*实现UserService接口类中的方法*/implements UserService {
}

6、测试文件的编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @author Bijiaqin
* @date 2019/6/28 13:50
*/
public class TestSpring {
@Test
public void run1(){
//加载Spring配置文件
ApplicationContext ac =
new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
//获取对象
UserService us = (UserService) ac.getBean("userService");
//调用service实现类中的查询方法
us.findUser();
}
}

​ 至此,Spring环境搭建完毕,部署运行即可。

三、Spring框架整合Springmvc框架

1、Springmvc框架的搭建

1.1 web.xml配置前端控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!--servlet配置前端控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化加载springmvc配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--启动服务器创建servlet对象-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern> <!--拦截任何请求-->
</servlet-mapping>

1.2 web.xml配置中文乱码过滤器

1
2
3
4
5
6
7
8
9
10
11
12
13
<!--配置解决中文乱码的过滤器-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

1.3 Springmvc框架配置文件的编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<!--开启注解扫描器,扫描包下所有控制类-->
<context:component-scan base-package="cn.njut"/>
<!--配置视图解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/pages/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>

<!--配置静态资源不被拦截/javascript/css/images等-->
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/fonts/**" location="/fonts/"/>
<mvc:resources mapping="/images/**" location="/images/"/>
<!--开启Springmvc注解,但是只对适配器、控制器、视图解析器类型生效-->
<mvc:annotation-driven/>
</beans>

1.4 添加注解及测试编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 用户控制类
* @author Bijiaqin
* @date 2019/6/27 9:42
*/
@Controller
@RequestMapping(path = "/user")
public class UserController {
/**
* springmvc项目框架搭建测试
* @return
*/
@RequestMapping("/springmvcTest")
public String springmvcTest(){
System.out.println("springmvcTest执行了....");
return "success";
}
}

1.5 jsp测试页面

1
<a href="user/springmvcTest">Springmvc框架测试</a>

​ 重新部署之后刷新页面点击超链接,可看到页面跳转,在idea控制台中也可看见效果。

2、Spring整合Springmvc

2.1 启动服务器加载Spring配置文件

1
2
3
4
5
6
7
8
9
<!--配置spring的监听器,默认只加载WEB-INF下的applicationContext.xml配置文件,所以需要设置文件路径参数-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--设置配置文件的路径-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

​ 2.2 Controller中自动注入Service接口类

1
2
3
4
5
6
7
8
9
10
11
12
13
@Autowired  //自动类型注入
private UserService userService;
/**
* springmvc项目框架搭建测试
* @return
*/
@RequestMapping("/springmvcTest")
public String springmvcTest(){
System.out.println("表现层:springmvcTest执行了....");
//若"@Autowired"注解成功注入UserService,则可调用其方法,表明自动Spring成功整合了Springmvc框架
userService.findUser();
return "success";
}

​ 至此,Spring整合Springmvc框架结束,注意配置文件时需要仔细。

四、Spring框架整合MyBatis

​ 整合成功则service可成功调用dao对象

​ 在Spring中配置MyBatis,applicationContext.xml配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!--Spring整合MyBatis框架步骤如下-->
<!--1、配置连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean>
<!--2、配置SqlSessionFactory工厂-->
<!--工厂可以创建session,通过session可以拿到代理对象-->
<!--IOC容器有工厂,可以创建session,就可拿到代理对象,把代理存到IOC容器中-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" value="dataSource"/>
</bean>
<!--3、配置Dao接口所在包-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.njut.dao"></property>
</bean>

​ 在service中通过自动注入的注解调用dao中的方法

1
2
3
4
5
6
7
8
9
10
11
@Autowired
private UserDao userDao;
@Override
public List<User> findUser() {
System.out.println("业务层:查询用户...");
return userDao.findUser();
}
@Override
public void registerUser(User user) {
userDao.registerUser(user);
}

​ Dao中操作数据库的代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* 用户Dao接口
* @author Bijiaqin
* @date 2019/6/28 11:06
*/
@Repository
public interface UserDao {
//查询用户,可用作登陆
@Select("select * from user")
public List<User> findUser();

//注册用户,此项目无需实现
@Insert("insert into user(name, password) values(#{name},#{password})")
public void registerUser(User user);
}

​ 事务暂未编写