82.【LibraryManger】(四)

简介: 82.【LibraryManger】

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>&nbsp;|&nbsp;
                            <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>&nbsp;|&nbsp;
                            <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";
    }
}

相关文章
|
SQL 存储 数据库连接
C#操作Access通用类
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.
756 0
|
3天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
282 100
|
3天前
|
JSON fastjson Java
FastJson 完全学习指南(初学者从零入门)
摘要:本文是FastJson的入门学习指南,主要内容包括: JSON基础:介绍JSON格式特点、键值对规则、数组和对象格式,以及嵌套结构的访问方式。FastJson是阿里巴巴开源的高性能JSON解析库,具有速度快、功能全、使用简单等优势,并介绍如何引入依赖,如何替换Springboot默认的JackJson。 核心API: 序列化:将Java对象转换为JSON字符串,演示对象、List和Map的序列化方法; 反序列化:将JSON字符串转回Java对象,展示基本对象转换方法;
|
4天前
|
Android开发 开发者 Windows
这是我设计的一种不关机,然后改造操作系统的软件设计思路2.0版本
本文介绍了在不重启系统的情况下实现操作系统改造的两种方案。第一种方案通过SLFM Recovery模式,在独立于操作系统的最高权限环境下完成系统更新与改造,并支持断电恢复与失败回滚。第二种方案采用多分区机制,通过SLFM套件在独立分区中完成系统改造,适用于可中断与不可中断服务场景,确保系统更新过程的安全与稳定。
225 132
|
4天前
|
缓存 JavaScript 前端开发
JavaScript 的三种引入方法详解
在网页开发中,JavaScript 可通过内联、内部脚本和外部脚本三种方式引入 HTML 文件,各具适用场景。本文详解其用法并附完整示例代码,帮助开发者根据项目需求选择合适的方式,提升代码维护性与开发效率。
193 110

热门文章

最新文章