博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM 实战项目①丨图书管理系统 丨(1) SSM 整合
阅读量:2828 次
发布时间:2019-05-14

本文共 7798 字,大约阅读时间需要 25 分钟。

SSM整合

本篇隶属于《SSM 实战项目①丨图书管理系统 》

详情请见:

本篇内容可作为 SSM 开发的基础代码框架使用,相关代码已单独抽离出来放在 Github 上。

Github 链接为:


一、创建 Maven 工程

1. 创建 Maven 的 webapp 工程
image-20200605195157076
2. 输入项目名
image-20200605195255576
3. 建立相应的文件夹

这个是初始状况,很显然是不够的,这里连个写 java 代码的地方都没有。

image-20200605195518456

这里要注意在创建文件夹的时候要为重要的文件夹做相应的绑定操作,具体如下:

image-20200605195715467

后面的 resources 和 test 同上进行绑定处理。

为减小篇幅,下面直接附上结果图:

image-20200605200404880

二、引入 jar 包

Maven 中央仓库连接:

1. Spring 相关包
  • springmvc(引入spring的核心包和springmvc)
org.springframework
spring-webmvc
5.0.2.RELEASE
  • spring-jdbc(事务控制)
org.springframework
spring-jdbc
5.0.2.RELEASE
  • spring-apects(面向切面编程,基于配置的事务控制会用到)
org.springframework
spring-aspects
5.0.2.RELEASE
2. Mybatis 相关包
  • Mybatis 基础包
org.mybatis
mybatis
3.4.5
  • Mybatis 和 Spring 整合的适配包
org.mybatis
mybatis-spring
1.3.1
  • Mybatis Generator(逆向工程代码生成器)
org.mybatis.generator
mybatis-generator-core
1.3.5
3. 数据库连接池及驱动
  • c3p0
c3p0
c3p0
0.9.1.2
  • Mysql 数据库驱动
mysql
mysql-connector-java
8.0.19
4. 测试相关包
  • junit
junit
junit
4.12
test

PS:Spring 5 搭配的 Junit 版本必须在 4.12 及以上,否则项目运行会报错。

  • spring-test
org.springframework
spring-test
5.0.2.RELEASE
5. Java Web 相关包
  • jstl
jstl
jstl
1.2
  • servlet-api
javax.servlet
javax.servlet-api
3.1.0
provided
  • jsp-api
javax.servlet.jsp
jsp-api
2.1
provided

这个 jar 包尚硅谷的教学视频里面没有引入,但是笔者开发时不引入这个 jar 包的时候在 jsp 页面中写代码会出现一点小问题。

6. 数据校验相关包
  • JSR303 数据校验(后端校验的时候可以用)
org.hibernate
hibernate-validator
6.1.0.Final
7. 分页查询支持
  • pageHelper
com.github.pagehelper
pagehelper
5.0.0
8. Json 数据绑定
  • Jackson-databind(我们这个项目后端传给前端的数据统一封装成 json 数据串)
com.fasterxml.jackson.core
jackson-databind
2.9.10.4

三、Tomcat 配置

1. 添加 Tomcat Server

image-20200605212914266

2. 部署

image-20200605213017160

关于这两个部署路径有什么区别,可以参考下面的文章,其中的 404 Not Found 有涉及到:

3. 更改应用上下文

image-20200605213139814

这样就部署完成了,这个应该比较简单。

四、引入 Bootstrap(可选)

1. 官网下载 Bootstrap

官网:

2. 官网下载 jQuery(Bootstrap的js文件用到了jQuery、我们后面数据解析也用到了 jQuery)

官网:

jQuery API 中文文档:

3. 将Bootstrap 和 jQuery 加入项目中
image-20200605211615714
4. 在 jsp 中引入 Bootstrap 和 jQuery
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ page isELIgnored="false" %>    <%        pageContext.setAttribute("APP_PATH",request.getContextPath()); //以 "/"开始,不以 "/" 结束    %>    
主界面

这里资源路径的设置方式可以参考下面两篇文章。

总结来说就是我们利用 request.getContextPath() 来获取项目的根路径并存放到 pageContext 域中(这个ContextPath其实就是我们上面的”更改应用上下文“),为其设置名称”APP_PATH“,我们要取出这个值的时候只需要利用 EL 表达式 ${APP_PATH} 取出来即可。

这样我们整个项目的资源路径问题就可以统一起来 —— 以服务器的根路径为基准

所以比如我们要访问 jQuery 源码的时候,直接:src="${APP_PATH}/static/js/jquery-1.11.3.js"。

5. 测试 Bootstrap 是否导入成功

用一个按钮即可测试Bootstrap 是否导入成功。

  • 不用 Bootstrap

image-20200605214314797

  • 使用 Bootstrap 样式

    • 上官方文档查阅资料

      image-20200605214418313

    • 复制我们需要用的 class 就可以了,我们这里演示红色按钮

          

    image-20200605214632898

这就说明我们的 Bootstrap 引入成功啦~


下面将开始编写 SSM 整合的关键配置文件,主要有5个部分:

  • web.xml
  • Spring
  • SpringMVC
  • Mybatis
  • Mybatis Generator

配置文件所在位置如下:

image-20200605232056691


五、编写 web.xml

web.xml 配置文件主要是配置 JavaWeb 相关的东西,比如监听器、前端控制器、字符编码过滤器、请求转换器等等。

1. 配置项目一启动,就加载 Spring 的容器
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
2. 配置 SpringMVC 的前端控制器
dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
1
dispatcherServlet
/
3. 配置编码过滤器
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
forceRequestEncoding
true
forceResponseEncoding
true
characterEncodingFilter
/*
4. 配置请求方式的过滤器
hiddenHttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter
hiddenHttpMethodFilter
/*
httpPutFormContentFilter
org.springframework.web.filter.HttpPutFormContentFilter
httpPutFormContentFilter
/*

本项目我们接口都遵循 Restful 风格。

Restful 风格可以参考本文:

也可以参考其他博主写的文章,笔者觉得非常不错:

百度百科:

六、编写 dispatcherServlet-servlet.xml

这是 SpringMVC 的配置文件,包含网站跳转逻辑的控制和配置 (该配置文件必须放在跟 web.xml 同级的目录下)。

1. 配置要扫描的包
2. 配置视图解析器:方便页面返回解析
3. 将 SpringMVC 不能处理的请求交给 Tomcat:这样静态资源和动态资源都可以请求到了
4. 配置 SpringMVC 的注解支持,使其支持一些更高级的功能:如 JSR303 校验,快捷的 AJAX 请求,映射动态请求

七、编写 jdbcconfig.properties

这是数据库的配置文件

dbc.jdbcUrl = jdbc:mysql://localhost:3306/luojia_library_db?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8jdbc.driverClass = com.mysql.cj.jdbc.Driverjdbc.user = rootjdbc.password = root

八、编写 applicationContext.xml

这是 Spring 的配置文件:主要配置和业务逻辑有关的。

Spring 配置文件的核心点 总结:

  • 数据源(1-3)

  • 与 Mybatis 整合(4-5)

  • 事务控制(6-8)

  • 批量操作支持(9)

0. 引入 schema
1. 配置要扫描的包:和SpringMVC 不同的是,它除了 controller 之外的都要
2. 引入外部的数据库配置文件
3. 数据源
4. 配置和 Mybatis 的整合
5. 配置扫描器,将 Mybatis 接口的实现加入到 ioC 容器中
6. 配置事务控制
7. 启基于注解的事务 or 使用 xml 配置形式的事务 (推荐后者)
8. 配置事务增强
9. 配置可以批量操作的sqlSession

九、编写 mybatis-config.xml

这是 Mybatis 的全局配置文件。

十、编写mbg.xml

这是 Mybatis Generator 的配置文件,主要是设置生成的 bean/dao/mapper 的位置和规范。

Mybatis Generator 官网:


配置文件基本就告一段落了,正所谓:约定>配置>编码。所以这个部分搞懂非常重要。而且,其实这部分都比较通用,整理出来,也便于日后复用。


十一、利用 Mybatis Generator 逆向工程生成 bean/dao/mapper

参考下面文章:

@Testpublic void test() throws Exception{
List
warnings = new ArrayList
(); boolean overwrite = true; File configFile = new File("mbg.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null);}

image-20200606110825352

十二、对 MBG 自动生成的文件进行改造,使其支持多表查询

参考下面文章

十三、测试 Mapper

上面文章的链接中已经包含了测试部分,这里为了减小篇幅,就不赘述了~

到这里,整个 SSM 高级整理就结束啦~笔者已将这部分单独抽离出来分享到 Github 上,有需要的读者可以在本篇文章的开头拿到 Github 地址。


  • 学习资料推荐

笔者在学习 SSM 整合的时候,是参考了尚硅谷的一个教学视频,觉得非常不错,这里推荐一下,本篇内容跟视频中的P1-P12基本吻合。


如有纰漏之处,还望不吝指出~

转载地址:http://gmded.baihongyu.com/

你可能感兴趣的文章
MySql基础
查看>>
Linux文件指令
查看>>
关于Python中isfile函数和isdir函数
查看>>
IOError: [Errno 13] Permission denied (权限不足)
查看>>
python路径拼接os.path.join()函数的用法
查看>>
python报错问题解决:'ascii' codec can't encode character
查看>>
Python 数据分析day_1:认识Notebook,及NumPy , Pandas 和 Matplotlib基本使用方法
查看>>
python 排序算法总结:选择排序,冒泡算法,归并排序(后续补充其他算法)
查看>>
每日一题 第二次考试 数据库题目,7.17数据库面试题目补充
查看>>
Python 生成器
查看>>
机器学习 day2 线性回归
查看>>
机器学习 day3 决策树算法
查看>>
mysql 数据库习题练习:
查看>>
使用 Flask 构建 1 个知识图谱 Web 应用(1)环境搭建
查看>>
乌班图 命令行 安装 Java
查看>>
利用浏览器 远程访问 腾讯云上的 neo4j 数据库服务器
查看>>
线程池原理及使用
查看>>
java封装的几个线程池介绍
查看>>
ThreadPoolExecutor中的submit()方法详细讲解
查看>>
android沉浸式状态栏StatusBar在不同Window下的实现
查看>>