“纸上得来终觉浅,绝知此事要躬行”
------陆游
经过前面教程的层层铺垫,我们来到了整合SSM框架(SSM: Spring SpringMVC MyBatis)的关键一步。本篇教程将给大家介绍如何在上一篇教程创建的Maven项目中,一步步整合Spring+SpringMVC+MyBatis+Shiro+Log4j框架。整合完成以后,能查询到数据库中用户表的详细字段信息并返回到前端页面上即为成功。
项目目录和框架整合完成后的演示:
一、写在前面
本篇教程是教程系列《SSM整合之企业级后台管理系统》中的第8篇,前面教程介绍了搭建集成开发环境、项目使用的技术和使用GitHub托管项目代码相关的内容,后续将继续介绍如何搭建一个企业级的后台管理系统,包括前端和后端实现。
温馨提示:本篇教程涉及的框架和配置文件都比较多,整合起来比较复杂,在学习过程中遇到项目启动报错或其它问题都属于比较正常的现象,希望同学们遇到问题时不要气馁和放弃,要根据报错信息查找问题所在。
在学习本系列过程中,有任何疑问或不明白的地方欢迎加qq群和我交流:584017112。
二、整合顺序
我们按照以下顺序逐个添加或完善配置文件内容:
- pom.xml(配置项目依赖库)
- web.xml(配置项目启动加载文件)
- spring-mvc.xml(配置SpringMVC)
- jdbc.properties(数据库连接信息)
- spring-mybatis.xml(配置MyBatis连接数据库)
- spring-shiro.xml(配置Shiro)
- XBasicDataSource.java(关闭数据库资源)
- MyShiroDbRealm.java(Shiro验证登录方法)
- log4j.properties(配置系统日志)
还有用于测试的用户类相关实现:
- User.java
- UserDao.java
- UserMapper.xml
- IUserService.java
- UserServiceImpl.java
以及,数据库中新建User表并插入一条数据:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
`password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
`status` enum('IN_USE','LOCKED') CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'IN_USE' COMMENT '用户状态 IN_USE=使用中 LOCKED=锁定',
`email` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`cname` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '中文名',
`mobile` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号',
`profile` mediumblob NULL COMMENT '用户头像',
`create_time` timestamp(0) NOT NULL COMMENT '创建时间',
`last_login_time` timestamp(0) NULL DEFAULT NULL COMMENT '最后一次登录时间',
`valid_until_time` date NULL DEFAULT NULL COMMENT '有效期止',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `user` VALUES (1, 'admin', '202cb962ac59075b964b07152d234b70', 'IN_USE', 'yoccoo@126.com', '超级管理员', '18712345678', null, '2019-07-09 16:11:44', '2019-09-26 09:50:03', '2099-12-31');
三、配置文件详情
1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>uchan-group</groupId>
<artifactId>OMS</artifactId>
<version>1.0-SNAPSHOT</version>
<name>OMS Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- spring版本号 -->
<spring.version>4.3.17.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.6</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
<scope>test</scope>
</dependency>
<!-- spring核心包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</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-oxm</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>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- JSTL标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>