整个项目源代码可以到我的github上下载。前四个阶段我们完成了用户的注册与登录功能,并对代码进行了优化,第五阶段我们完成书城项目的图书模块,属于后台管理中的图书管理功能,主要包括图书的添加,删除,修改以及显示。
数据库表
首先编写图书模块的数据库表,使用如下Sql语句创建t_book表,并插入初始化测试数据。
1 | create table t_book( |
编写图书模块的JavaBean
我们在pojo目录下创建Book类,它的属性如下,并设置get,set,有参和无参构造方法。
1 | private Integer id; |
需要注意的是,对于图片路径imgPath,我们初始化了一个默认图片路径,对于之后修改,如果传入图片路径为null或空串,我们就不对imgPath进行修改,因此我们需要对默认构造方法以及setImgPath方法做出如下修改。
1 | // 要求给定的图书封面图片路径不能为空 |
编写图书模块的Dao和测试Dao
Dao接口
1 | package com.atguigu.dao; |
BookDaoImpl实现类
1 | package com.atguigu.dao.impl; |
BookDao的测试:
我们在test目录下创建BookDaoTest类进行测试。
1 | package com.atguigu.test; |
编写图书模块的Service和测试Service
BookService接口
1 | import com.atguigu.pojo.Book; |
BookServiceImpl实现类
1 | package com.atguigu.service.impl; |
BookService的测试:
在test目录下创建BookServiceImplTest测试类
1 | package com.atguigu.test; |
编写图书模块的Web层,页面联调测试
图书列表功能的实现
图解列表功能流程

BookServlet程序中添加list方法
在web目录下创建BookServlet类,并让其继承BaseServlet,并实现list方法,需要注意的是,我们直接访问是通过get访问的,所以我们要实现doGet方法,让其调用doPost方法。
1 | public class BookServlet extends BaseServlet{ |
然后在web.xml中添加映射
1 | <servlet> |
我们将其 url 放在 /manager 下是因为,图书管理属于后台管理,放在/manager下用于区别其是后台功能。
3. 修改图书管理请求地址
我们在manager_menu.jsp中修改图书管理请求地址
4. 修改 pages/manager/book_manager.jsp 页面的数据遍历输出
导入如下jar包
1 | taglibs-standard-impl-1.2.1.jar |
修改book_manager.jsp,利用JSTL标签库遍历输出图书信息。
添加图书功能的实现
- 添加图书流程细节

- 问题说明
如果像之前一样,通过Servlet的程序转发请求,那么前后算是同一个请求,而当用户提交完请求,浏览器会记录下最后一次请求的全部信息。当用户按下功能键F5,就会发起浏览器记录的最后一次请求。那么就会重复添加图书项,所以这里要使用重定向,这样前后就是两次请求了,就算按F5也是展示图书列表。 BookServlet程序中添加add方法
1 | protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
- 修改
book_edit.jsp页面
这里如果使用post方法提交会中文乱码,可以通过修改post的编码解决。
删除图书功能的实现
- 图解删除流程

BookServlet中添加delete方法
删除功能需要id项,我们通过getParameter方法获得的id是字符串类型,需要将其转换为Integer型。所以我们给WebUtils工具类添加转换Interger类型。
1 | /** |
然后在BookServlet中添加 delete 方法
1 | protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, |
修改删除的连接地址

给删除添加确认提示操作
删除属于危险项,所以我们需要添加确认操作,给删除的a标签绑定单击事件。
1 | <script type="text/javascript"> |
修改图书功能的实现
图解修改图书细节

更新修改的请求地址

BookServlet程序中添加getBook方法
1 | protected void getBook(HttpServletRequest req, HttpServletResponse resp) throws ServletException, |
- 在
book_edit.jsp页面中显示修改的数据
- 在
BookServlet程序中添加update方法
1 | protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, |
- 解决
book_edit.jsp页面,既要实现添加,又要实现修改操作。