此项目用于回顾ssm整合的过程,加深自己对ssm三大框架的理解以及提高使用框架的能力,同时也是对前端,web,mysql等知识的复习。
一、设计数据库
创建一个名为ssm的数据库,由于只是一个图书的crud项目,这里只创建一个books表
1 | CREATE DATABASE ssm; |
二、项目基本环境搭建
1、使用Maven创建项目 SSM。(注意:这里并没有使用模板创建)
2、导入项目需要的依赖
1 | <!--依赖 junit,数据库连接驱动,数据库连接池,servlet,jsp,springmvc,spring-jdbc,mybatis,mybatis-spring--> |
3、Maven资源过滤设置
1 | <!--静态资源导出--> |
4、建立项目包结构和配置框架
mybatis-config.xml
1 |
|
application.xml
1 |
|
jdbc.properties
1 | jdbc:mysql://localhost:3306/ssm?serverTimezone=Asia/Shanghai = |
三、MyBatis层编写
1、创建实体类Book
这里使用Lombok(偷懒~),需要导入依赖:(注意:IDEA首次使用时需要安装插件 setting->plugins->lombok)
1 | <!--Lombok--> |
1 | // 隐式导入所有get set toString 无参构造等方法 |
2、编写BookMapper接口
1 | public interface BookMapper { |
3、编写BookMapper接口的sql映射文件BookMapper.xml
1 |
|
4、在mybtis配置文件中注册sql映射文件
1 |
|
至此,Dao层编写完成,下一步编写Service层
5、编写Service层的接口和实现类
1 | public interface BookService { |
1 | public class BookServiceImpl implements BookService{ |
四、Spring层整合Dao,Service层
1 |
|
然后,需要在Service实现类上添加@Service注解
五、SpringMVC层的整合
1、添加web支持
右键项目
勾选Web Application
配置web.xml
1 |
|
创建springmvc.xml并进行配置
1 |
|
到此为止,整个ssm项目的配置文件基本上配置完成了,ssm项目与springboot项目相比,最大的不同就是这种繁杂的配置,但是学习ssm是必不可少的,只有这样才能了解到整个Javaweb工程的核心。
下一步是编写controller层以及与前端页面的交互。
六、Controller层与页面之间的交互
编写BookController类,添加crud方法
方法一:查询所有图书
1 |
|
编写首页:index.jsp
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
编写展示所有图书的页面allBook.jsp
1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
启动Tomcat测试:
由于我使用maven直接创建的项目,没有使用maven中的模板,所以需要手动将项目目录下的包打包至WEB-INF目录下,Tomcat才能正常启动:
方法二:添加图书
1、首先在展示所有图书的页面allBooks.jsp添加一个发起请求的链接
1 | <div class="col-md-12 column"> |
然后在BookConntroller添加一个跳转到添加页面的方法
1 | /** |
编写添加图书的页面addBook.jsp,也就是一个表单
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
最后在BookController中编写添加图书的方法
1 | /** |
方法三:修改图书
在展示所有图书的页面添加发起请求的链接:
1 | <td> |
在BookController中添加跳转到修改页面的方法
1 | /** |
编写修改图书的页面updateBook.jsp,又是一个表单
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
最后在BookController中编写修改图书的方法
1 | /** |
这里更新不了的原因是因为updateBook中的book对象的id值为空,而更新图书时需要id作为参数去查找哪一本图书要更新。解决方案是在修改图书页面的表单中添加一组隐藏域,将id值传给updateBook()方法即可
1 | <input type="hidden" name="id" value="${book.id}">### 方法四:删除图书 |
在展示所有图书的页面添加发起请求的链接
1 | <td> |
方法四:删除图书
在BookController中添加删除图书的方法
1 | /** |
方法五:模糊搜索
mapper层:
1 | /** |
1 | <select id="queryBookByName" resultType="com.zyz.bean.Book"> |
service层
1 | /** |
1 | public List<Book> queryBookByName(String name) { |
controller层
1 | /** |
前端页面:
1 | <form action="${pageContext.request.contextPath}/book/queryBook" method="post"> |
七、项目总体结构
八、最终效果
九、总结
1、ssm整合的总体思路:使用spring容器去管理Dao,Service对象,springmvc容器管理Controller对象,springmvc容器是spring的子容器,springmvc容器中的controller对象能访问到spring容器中的service对象。
2、对css的一些属性的运用还不是很熟练