书籍管理项目部分源码
Controller 和 视图层编写
1. BookController 类编写 , 方法一:查询全部书籍
@Controller
@RequestMapping("/book")
public class BookController {
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
@RequestMapping("/allBook")
public String list(Model model) {
List<Books> list = bookService.queryAllBook();
model.addAttribute("list", list);
return "allBook";
}
}
2. 编写首页 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
<title>首页</title>
<style type="text/css">
a {
text-decoration: none;
color: black;
font-size: 18px;
}
h3 {
width: 180px;
height: 38px;
margin: 100px auto;
text-align: center;
line-height: 38px;
background: deepskyblue;
border-radius: 4px;
}
</style>
</head>
<body>
<h3>
<a href="${pageContext.request.contextPath}/book/allBook">点击进入列表
页</a>
</h3>
</body>
</html>
3. 书籍列表页面 allbook.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>书籍列表</title>
<meta name="viewport" content="width=device-width, initialscale=1.0">
<!-- 引入 Bootstrap -->
<link
href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
<small>书籍列表 —— 显示所有书籍</small>
</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 column">
<a class="btn btn-primary"
href="${pageContext.request.contextPath}/book/toAddBook">新增</a>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>书籍编号</th>
<th>书籍名字</th>
<th>书籍数量</th>
<th>书籍详情</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach var="book"
items="${requestScope.get('list')}">
<tr>
<td>${book.getBookID()}</td>
<td>${book.getBookName()}</td>
<td>${book.getBookCounts()}</td>
<td>${book.getDetail()}</td>
<td>
<a
href="${pageContext.request.contextPath}/book/toUpdateBook?
id=${book.getBookID()}">更改</a> |
<a
href="${pageContext.request.contextPath}/book/del/${book.getBookID()}">
删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
4. BookController 类编写 , 方法二:添加书籍
@RequestMapping("/toAddBook") public String toAddPaper() { return "addBook"; } @RequestMapping("/addBook") public String addPaper(Books books) { System.out.println(books); bookService.addBook(books); return "redirect:/book/allBook"; }
5. 添加书籍页面:addBook.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>新增书籍</title> <meta name="viewport" content="width=device-width, initialscale=1.0"> <!-- 引入 Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> <small>新增书籍</small> </h1> </div> </div> </div> <form action="${pageContext.request.contextPath}/book/addBook" method="post"> 书籍名称:<input type="text" name="bookName"><br><br><br> 书籍数量:<input type="text" name="bookCounts"><br><br><br> 书籍详情:<input type="text" name="detail"><br><br><br> <input type="submit" value="添加"> </form> </div>
6. BookController 类编写 , 方法三:修改书籍
@RequestMapping("/toUpdateBook") public String toUpdateBook(Model model, int id) { Books books = bookService.queryBookById(id); System.out.println(books); model.addAttribute("book",books ); return "updateBook"; } @RequestMapping("/updateBook") public String updateBook(Model model, Books book) { System.out.println(book); bookService.updateBook(book); Books books = bookService.queryBookById(book.getBookID()); model.addAttribute("books", books); return "redirect:/book/allBook"; }
7. 修改书籍页面 updateBook.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>修改信息</title> <meta name="viewport" content="width=device-width, initialscale=1.0"> <!-- 引入 Bootstrap --> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row clearfix"> <div class="col-md-12 column"> <div class="page-header"> <h1> <small>修改信息</small> </h1> </div> </div> </div> <form action="${pageContext.request.contextPath}/book/updateBook" method="post"> <input type="hidden" name="bookID" value="${book.getBookID()}"/> 书籍名称:<input type="text" name="bookName" value="${book.getBookName()}"/> 书籍数量:<input type="text" name="bookCounts" value="${book.getBookCounts()}"/> 书籍详情:<input type="text" name="detail" value="${book.getDetail() }"/> <input type="submit" value="提交"/> </form> </div>
8. BookController 类编写 , 方法四:删除书籍
@RequestMapping("/del/{bookId}") public String deleteBook(@PathVariable("bookId") int id) { bookService.deleteBookById(id); return "redirect:/book/allBook"; }
项目结构图
实现查询书籍功能
1. 前端页面增加一个输入框和查询按钮
<div class="col-md-4 column"></div> <div class="col-md-4 column"> <form class="form-inline" action="/book/queryBook" method="post" style="float: right"> <input type="text" name="queryBookName" class="form-control" placeholder="输入查询书名" required> <input type="submit" value="查询" class="btn btn-primary"> </form> </div>
2. 编写查询的Controller
@RequestMapping("/queryBook") public String queryBook(String queryBookName,Model model){ System.out.println("要查询的书籍:"+queryBookName); //业务逻辑还没有写 return "allBook"; }
3. 由于底层没有实现,所以我们要将底层代码先搞定
4. Mapper接口
//根据id查询,返回一个Book Books queryBookByName(String bookName);
5. Mapper.xml
<!--根据书名查询,返回一个Book--> <select id="queryBookByName" resultType="Books"> select * from ssmbuild.books where bookName = #{bookName} </select>
6. Service接口
//根据id查询,返回一个Book Books queryBookByName(String bookName);
7. Service实现类
public Books queryBookByName(String bookName) { return bookMapper.queryBookByName(bookName); }
8. 完善Controller
@RequestMapping("/queryBook") public String queryBook(String queryBookName,Model model){ System.out.println("要查询的书籍:"+queryBookName); Books books = bookService.queryBookByName(queryBookName); List<Books> list = new ArrayList<Books>(); list.add(books); model.addAttribute("list", list); return "allBook"; }
9. 测试,查询功能OK!
10. 无聊优化!我们发现查询的东西不存在的时候,查出来的页面是空的,我们可以提高一下用户的体 验性!
1. 在前端添加一个展示全部书籍的按钮
2. 并在后台增加一些判断性的代码!
@RequestMapping("/queryBook") public String queryBook(String queryBookName,Model model){ System.out.println("要查询的书籍:"+queryBookName); //如果查询的数据存在空格,则优化 Books books = bookService.queryBookByName(queryBookName.trim()); List<Books> list = new ArrayList<Books>(); list.add(books); //如果没有查出来书籍,则返回全部书籍列表 if (books==null){ list = bookService.queryAllBook(); model.addAttribute("error", "没有找到本书!"); } model.addAttribute("list", list); return "allBook"; }
3. 将错误信息展示在前台页面!完整的查询栏代码
<div class="row"> <div class="col-md-4 column"> <a class="btn btn-primary" href="${pageContext.request.contextPath}/book/toAddBook">新增</a> <a class="btn btn-primary" href="${pageContext.request.contextPath}/book/allBook">显示全部书籍 </a> </div> <div class="col-md-8 column"> <form class="form-inline" action="/book/queryBook" method="post" style="float: right"> <span style="color:red;font-weight: bold">${error} </span> <input type="text" name="queryBookName" class="formcontrol" placeholder="输入查询书名" required> <input type="submit" value="查询" class="btn btnprimary"> </form> </div> </div>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性