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

相关文章
|
12月前
|
Rust 安全 前端开发
为什么 Rust 备受开发者青睐?
在本篇文章中,作者介绍了 Rust 是什么,它的历史以及 Rust 是如何备受开发者和行业的青睐。希望本篇文章能帮助读者对 Rust 这门语言有一个大概的了解。
137687 43
|
12月前
|
SQL 关系型数据库 MySQL
第 2 回|妙手神医瑶池诊疗实录:数据库存储空间去哪儿了?
近日,寒霜城数据库突发奇症,明明才检查好的存储空间,在2个小时内逼近磁盘峰值,即将被锁。这一急症背后的根因是什么?妙手神医瑶池又将如何应对呢?
|
编解码 开发工具 Android开发
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
4K分辨率即4096×2160的像素分辨率,它是2K投影机和高清电视分辨率的4倍,属于超高清分辨率。在此分辨率下,观众将可以看清画面中的每一个细节,每一个特写。影院如果采用惊人的4096×2160像素,无论在影院的哪个位置,观众都可以清楚的看到画面的每一个细节,影片色彩鲜艳、文字清晰锐丽,再配合超真实音效,这种感觉真的是一种难以言传的享受。
308 0
安卓端/iOS端如何播放4K分辨率的RTMP/RTSP流
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js的校园外卖服务系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的校园外卖服务系统附带文章和源代码设计说明文档ppt
33 0
|
12月前
|
搜索推荐 安全 数据挖掘
产品运营方法论:从目标拆解到策略重构
本文从产品运营的定义到作者对产品运营的理解以及一些工作中用到的方法论做了总结。
211069 33
|
12月前
|
安全 Java API
Java上进了,JDK21 要来了,并发编程再也不是噩梦了
之前写过 新项目为什么决定用 JDK 17了,还没过多久,JDK 21 马上就出来了,看来 Java 这几年真的是长进了。 目前 Java 的最新稳定版是 JDK 20,但这是个过渡版,JDK21就是 LTS 版的了,也快要发布了,在今年9月份(也就是2023年9月)就要正式发布了。 但是,猜都不用猜,你肯定还在用 Java 8 吧!
Java上进了,JDK21 要来了,并发编程再也不是噩梦了
|
12月前
|
算法 架构师 安全
需求分析和常见的需求问题解决
需求分析和常见的需求问题解决
110900 17
|
12月前
|
存储 分布式计算 MaxCompute
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本文将介绍企业在没有向量数据的情况下,如何通过OpenSearch向量检索版、MaxCompute以及OSS,快速搭建图像搜索服务。
42749 1
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
|
Cloud Native 关系型数据库 分布式数据库
阿里云亮相数据库顶会VLDB 2023特邀主旨演讲:云数据库要像乐高积木一样好用
阿里云数据库再获国际顶会肯定!17篇论文入选VLDB刷新纪录
|
12月前
|
运维 Kubernetes 监控
基于Kubernetes的Serverless PaaS稳定性建设万字总结
本文将侧重于实际落地而非方法论,阐述云产品 SAE 业务侧稳定性实际建设过程中的经验和思考。