16.删除书籍
主要在allBook.jsp进行传输id,通过RestFul风格进行传输
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"> <!-- 可选的 Bootstrap 主题文件(一般不用引入) --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css" integrity="sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ" crossorigin="anonymous"> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script> </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 class="row"> <div class="col-md-4 column"> <a href="${pageContext.request.contextPath}/book/addBook">新增书籍</a> </div> </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> <%-- 数据库从数据库中进行查询,从这个list中遍历出来 : foreach : item也可以直接写 ${msg} --%> <c:forEach var="book" items="${msg}"> <tr> <td>${book.bookID}</td> <td>${book.bookName}</td> <td>${book.bookCounts}</td> <td>${book.detail}</td> <td> <%-- 在这里因为我们跳转到一个修改的页面,也是一个方法。我们通过?传值或则Restful进行传id。我们先通过id进行查找一个 用户的信息,然后放进model中,供应于前端调用。 --%> <a href="${pageContext.request.contextPath}/book/updateBook?id=${book.bookID}">修改</a> | <a href="${pageContext.request.contextPath}/book/delete/${book.bookID}">删除</a> </td> </tr> </c:forEach> </tbody> </table> </div> </div> </div> </body> </html>
controller.java
使用RestFul风格进行传递参数 @PathVariable
package com.Jsxs.controller; import com.Jsxs.pojo.Books; import com.Jsxs.service.BookService; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.util.List; @Controller @RequestMapping("/book") public class BookController { // controller 掉 service @Resource private BookService bookService; // 查看所有的书籍 @GetMapping("/allBook") public String list(Model model){ List<Books> books = bookService.selectBook(); model.addAttribute("msg",books); return "allBook"; } // 跳转到添加书籍页面 @GetMapping("/addBook") public String add(){ return "addBook"; } // 开始添加的操作 @GetMapping("/add") public String addBook(Books books){ bookService.addBook(books); return "redirect:/book/allBook"; //重定向到我们到@RequestMapper("/allBook"); 我们这里重定向的是方法不是WEB-INF 所以能够重定向的到 } // 跳转到修改的页面 @GetMapping("/updateBook") public String update(int id,Model model){ //这里的目的是默认值 Books books = bookService.selectBookById(id); model.addAttribute("books",books); return "updateBook"; } // 开始修改的操作 @GetMapping("/update") public String updateBook(Books books){ int i = bookService.updateBook(books); return "redirect:/book/allBook"; } // 跳转到删除的页面 @GetMapping("/delete/{id}") public String delete(@PathVariable int id){ bookService.deleteBook(id); return "redirect:/book/allBook"; } }
17.模糊查询书籍
模糊查询的sql语句
<select id="queryBookByName" resultType="com.Jsxs.pojo.Books" > select *from books where bookName like '%' #{bookName} '%' </select>
添加一个表单,路径指向通过书籍名字进行查询的java方法.,书籍的name属性可以进行自定义但是需要和后端代码的name一样。并且添加为null的操作,假如为null,就显示数据查找不到
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <!-- 最新版本的 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"> <!-- 可选的 Bootstrap 主题文件(一般不用引入) --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap-theme.min.css" integrity="sha384-6pzBo3FDv/PJ8r2KRkGHifhEocL+1X2rVCTTkUfGk7/0pbek5mMa1upzvWbrUbOZ" crossorigin="anonymous"> <!-- 最新的 Bootstrap 核心 JavaScript 文件 --> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script> </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 class="row"> <div class="col-md-4 column"> <a href="${pageContext.request.contextPath}/book/addBook">新增书籍</a> </div> <div class="col-md-4 column" style="float: right"> <form action="${pageContext.request.contextPath}/book/queryBook" method="get"> <input type="text" placeholder="请输入查找书籍的ID" name="queryBookName" class="form-control"> <input type="submit" value="查询" class="btn btn-primary"> </form> </div> </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> <%-- 数据库从数据库中进行查询,从这个list中遍历出来 : foreach : item也可以直接写 ${msg} --%> <c:forEach var="book" items="${msg}"> <tr> <td>${book.bookID}</td> <td>${book.bookName}</td> <td>${book.bookCounts}</td> <td>${book.detail}</td> <td> <%-- 在这里因为我们跳转到一个修改的页面,也是一个方法。我们通过?传值或则Restful进行传id。我们先通过id进行查找一个 用户的信息,然后放进model中,供应于前端调用。 --%> <a href="${pageContext.request.contextPath}/book/updateBook?id=${book.bookID}">修改</a> | <a href="${pageContext.request.contextPath}/book/delete/${book.bookID}">删除</a> </td> </tr> </c:forEach> <h4 style="color: red;text-align: center;font-size: 30px;font-family: 楷体">${NoTFound}</h4> </tbody> </table> </div> </div> </div> </body> </html>
①对链表的长度进行判断,假如说链表的长度为0,那么我们就传入前端一个NoFound否则我们就把查询到的链表传送过去。②切记传送值得属性名要和allBook得属性名一样,目的是为了达到复用得操作。③返回得路径是allBook.jsp
package com.Jsxs.controller; import com.Jsxs.pojo.Books; import com.Jsxs.service.BookService; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.util.List; @Controller @RequestMapping("/book") public class BookController { // controller 掉 service @Resource private BookService bookService; // 查看所有的书籍 @GetMapping("/allBook") public String list(Model model){ List<Books> books = bookService.selectBook(); model.addAttribute("msg",books); return "allBook"; } // 跳转到添加书籍页面 @GetMapping("/addBook") public String add(){ return "addBook"; } // 开始添加的操作 @GetMapping("/add") public String addBook(Books books){ bookService.addBook(books); return "redirect:/book/allBook"; //重定向到我们到@RequestMapper("/allBook"); 我们这里重定向的是方法不是WEB-INF 所以能够重定向的到 } // 跳转到修改的页面 @GetMapping("/updateBook") public String update(int id,Model model){ //这里的目的是默认值 Books books = bookService.selectBookById(id); model.addAttribute("books",books); return "updateBook"; } // 开始修改的操作 @GetMapping("/update") public String updateBook(Books books){ int i = bookService.updateBook(books); return "redirect:/book/allBook"; } // 跳转到删除的页面 @GetMapping("/delete/{id}") public String delete(@PathVariable int id){ bookService.deleteBook(id); return "redirect:/book/allBook"; } // 根据id进行查询一本书籍 @GetMapping("/queryBook") public String query(String queryBookName,Model model){ List<Books> books = bookService.queryBookByName(queryBookName); if (books.size()==0){ model.addAttribute("NoTFound","很抱歉,没有查到相关的信息!"); }else { model.addAttribute("msg",books); } return "allBook"; } }