环境要求
环境:
IDEA
MySQL 5.7.19
Tomcat 9
Maven 3.6
要求:
需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;
数据库环境
创建一个存放书籍数据的数据库表,并插入一些示例数据
SSM整合
新建一个空的Maven项目
导入相关依赖
将数据库与IDEA连接起来
把项目结构建立起来
applicationContext.xml、mybatis-config.xml
创建spring的配置文件applicationContext.xml和mybatis的核心配置文件mybatis-config.xml
database.properties文件用于数据库连接
创建database.properties配置文件,用于数据库的连接
mybatis-config.xml中加入类的位置,后面可简化一些操作。
在pom.xml中加入lombok依赖
创建一个与数据库表中字段对应的Books类
编写BookeMapper接口,定义一些相应的增删改查接口
创建BookeMapper.xml编写对应方法的sql语句
注册这个Mapper.xml
在mybatis-config.xml配置文件中注册这个Mapper.xml
编写Service层接口
编写Service层接口,增删改查方法与DAO层一致
编写Service层的具体实现类
编写Service层的具体实现类,实现刚才的接口,重写方法,用set方法能够方便注入Dao层的对应接口,然后每个方法中,实际上调用的还是Dao层接口的对应方法
spring跟dao层的配置文件spring-dao.xml
创建一个spring跟dao层的配置文件spring-dao.xml,右上角关联至我们原先创建的那个关联
然后将我们之前用来连接数据库的properties文件导入进来,连接池用c3p0,配置数据库账号密码之类的信息
配置dao接口扫包,动态的实现了Dao接口可以注入到Spring容器中!
spring跟Service层的配置文件spring-service.xml
配置和扫描service下的包,将我们的所有业务类,注入到Spring,可以通过配置,或者注解实现
这里将刚才的Service层的实现类注册其中,然后通过set方法,将我们dao层的那个接口注入其中。
spring的核心配置文件applicationContext.xml中引入dao、service层的配置文件
在spring的核心配置文件applicationContext.xml中引入spring跟dao层的配置文件spring-dao.xml和spring跟Service层的配置文件spring-service.xml
整合SpringMVC
添加web支持
创建SpringMVC的配置文件spring-mvc.xml
spring的核心配置文件applicationContext.xml中也引入这个配置文件
在web.xml中配置DispatcherServlet、乱码过滤器以及session
注意这里绑定的spring-mvc.xml,应该改为applicationContext.xml,如果不改,有的bean找不到
在配置文件spring-mvc.xml配置映射器、适配器、视图解析器这些,以及扫描controller层的配置
环境配差不多了正式开启demo
查询全部书籍
编写Controller,查询全部书籍,返回到WEB-INF包下(此包下的页面只能通过controller或servlet来访问)的allBook.jsp页面-
在WEB-INF包下创建这个Controller返回的allBook.jsp页面
编写首页,写一个调用刚才的查询所有书籍的Controller路由的按钮
美化Controller返回的allBook.jsp页面
将Controller存在model中的所有书籍信息list列表用取出来
进首页点那个按钮再调用刚才的controller返回出allBook.jsp页面
增加书籍接口
在allBooke界面加入一个能跳转增加书籍的Controller路由的按钮“新增书籍”
编写跳转的这个Controller层,以及处理后的跳转页面
编写新增书籍页面
在这个页面里写一个能添加新书籍的表单,并准备编写这个表单提交后发给的Controller
编写表单提交后发给的路由
把表单输入的每个数据名与Books类的属性名对照,使得提交后,增加书籍的Controller可以直接接收到这些参数。
编写新增表单提交后发给的Controller,将信息增加到数据库中后,直接重定向到查所有书籍的Controller。
完成后试一试,添加一个书籍
提交后,发现重定向回查询所有书籍的页面,并且看到增加成功
修改书籍接口
在显示查询出所有书籍的页面,每本书的后面增加修改和删除按钮
在修改按钮上绑定一个执行修改操作的Controller的路由,并将该书籍的id当成参数传进去
编写这个跳转的Controller,将这个书籍的改之前的信息查到,存到model里,并跳转到真正要提交更改信息的updateBook.jsp的页面
创建这个updateBook.jsp页面
将这个页面里写一个表单,用来提交更改后的书籍信息,这里每个书籍的信息都默认赋值为原本的该id的这个书籍信息,是从我们刚才存的model里取出来的。
配置这个表单提交后所要执行修改书籍信息的Controller的路由
最重要的一点是,在提交这一系列修改书籍的信息前,还要将书籍的id,用一个隐藏域给加上,一起传过去,才能使得后面修改操作完成,不然没id,肯定修改不了这本书的信息。
编写这个Controller,修改信息过后,重定向到查询所有书籍的那个Controller,再通过这个Controller跳转至显示所有书籍的页面。
演示,点击编号为1书籍的修改操作
跳到提交修改信息的页面,在中间跳这个页面之前,还穿插了一个查询该id原本信息的Controller,然后才跳转至了这个页面,原本信息被赋值到了这里的每个属性里。
把书名改了,然后提交修改操作。
点修改后,这修改的信息以参数的形式,跳转到了修改信息的Controller,然后执行修改操作,重定向至查询所有书籍的Controller,再通过这个Controller跳转到了显示所有书籍的jsp页面。发现信息修改成功。
删除书籍接口
在显示所有书籍的jsp页面中的删除按钮前,绑定它所要跳转的执行删除书籍操作的Controller,并携带本书的id为参数。
编写这个Controller,然后再重定向至查询所有书籍的Controller,进而再跳转到显示所有书籍的jsp页面。
也可用restful风格
根据书名查书籍接口
在显示所有书籍的jsp页面中加一个根据书名查书籍的表单
绑定提交书籍名称后需要跳转执行根据书名查书籍信息的Controller路由。
Dao层在接口中新加这个根据书名查书信息的方法
在Mapper.xml编写该方法的对应sql
service层的接口中加入该方法
service层实现类中重写该方法
编写这个执行根据书名查书籍的Controller
如果没查到,需要返回,所以再显示所有书籍的jsp页面再加一个显示全部书籍按钮,绑定的还是查询所有书籍的那个Controller路由,方便回去。
书籍如果查不到,点这个按钮还能回去。
完善查询书籍的Controller,如果没查到书籍,在model里加一个error信息
返回后,如果model里有error信息会显示出来