查询书籍功能

  1. 完善Controller:BookController

    @Controller
    @RequestMapping("/book")
    public class BookController {
    //coontroller层调service层
    @Autowired
    @Qualifier("BookServiceImpl")
    private BookService bookService; //查询全部的书籍,并且返回到书籍展示也命啊
    @RequestMapping("/allBook")
    public String list(Model model){
    List<Books> books = bookService.queryAllBook(); model.addAttribute("list",books); return "allBook";
    } }
  2. 完善首页 index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>首页</title>
    <style>
    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: 5px;
    }
    </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>
    <%--BookStrap美化界面--%>
    <link href="https://cdn.staticfile.org/twitter-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 clearfix">
    <div class="col-md-12 column">
    <table class="table table-hover table-striped">
    <thead>
    <tr>
    <th>书籍编号</th>
    <th>书籍名称</th>
    <th>书籍数量</th>
    <th>书籍详情</th> </tr>
    </thead>
    <%--书籍从数据库中查询得到 books遍历出来:foreach--%>
    <tbody>
    <c:forEach var="book" items="${list}">
    <tr>
    <td>${book.bookID}</td>
    <td>${book.bookName}</td>
    <td>${book.bookCounts}</td>
    <td>${book.detail}</td>
    </tr>
    </c:forEach>
    </tbody>
    </table>
    </div> </div>
    </div>
    </body>
    </html>

增加书籍功能

  1. 在显示所有书籍页面添加 新增书籍按钮 allBook.jsp

    <div class="row">
    <div class="col-md-4 column">
    <%--toAddBook--%>
    <a class="btn btn-primary" href="${pageContext.request.contextPath}/book/toAddBook">新增书籍</a>
    </div>
    </div>
  2. 新增跳转功能和添加书籍功能 BookController.java

    //跳转到增加书籍页面
    @RequestMapping("/toAddBook")
    public String toAddPaper(){
    return "addBook";
    } //添加书籍的请求
    @RequestMapping("/addBook")
    public String addBook(Books books){
    System.out.println("addBook"+books);
    bookService.addBook(books);
    return "redirect:/book/allBook"; //重定向到@RequestMapping("/allBook")请求
    }
  3. 新增添加书籍页面及表单 addBook.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>增加书籍</title>
    <link href="https://cdn.staticfile.org/twitter-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="">
    <div class="form-group">
    <label>书籍名称:</label>
    <input type="text" name="bookName" class="form-control" required>
    </div>
    <div class="form-group">
    <label>书籍数量:</label>
    <input type="text" name="bookCounts" class="form-control" required>
    </div>
    <div class="form-group">
    <label>书籍描述:</label>
    <input type="text" name="detail" class="form-control" required >
    </div>
    <div class="form-group"> <input type="submit" class="form-control" value="添加">
    </div> </form>
    </div>
    </body>
    </html>

修改删除书籍

  1. 修改页面 updateBook

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>修改书籍</title>
    <link href="https://cdn.staticfile.org/twitter-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="get">
    <%--出现的问题,我们提交了sql请求,但是修改失败,看一下sql语句能否执行成功,前端没传id,前端应该传递隐藏域--%>
    <input type="hidden" name="bookID" value="${Qbooks.bookID}"> <div class="form-group">
    <label>书籍名称:</label>
    <input type="text" name="bookName" class="form-control" value="${Qbooks.bookName}" required>
    </div>
    <div class="form-group">
    <label>书籍数量:</label>
    <input type="text" name="bookCounts" class="form-control" value="${Qbooks.bookCounts}" required>
    </div>
    <div class="form-group">
    <label>书籍描述:</label>
    <input type="text" name="detail" class="form-control" value="${Qbooks.detail}" required >
    </div>
    <div class="form-group"> <input type="submit" class="form-control" value="修改">
    </div> </form>
    </div>
    </body>
    </html>
  2. 增加修改和删除的链接 allBook.jsp

    <td>
    <a href="${pageContext.request.contextPath}/book/toUpdateBook?id=${book.bookID}">修改</a>
    &nbsp;|&nbsp;
    <a href="${pageContext.request.contextPath}/book/deleteBook/${book.bookID}">删除</a>
    </td>
  3. Controller新增修改和删除方法

    //跳转到修改页面
    @RequestMapping("/toUpdateBook")
    public String toUpdatePaper(int id,Model model){
    Books books = bookService.queryBookById(id); model.addAttribute("Qbooks",books);
    return "updateBook";
    } //修改书籍
    @RequestMapping("/updateBook")
    public String updateBook(Books books){
    System.out.println("updateBook:"+books);
    bookService.updateBook(books); return "redirect:/book/allBook";
    }
    //删除书籍
    @RequestMapping("/deleteBook/{bookId}")
    public String deleteBook(@PathVariable("bookId") int id){
    bookService.deleteBookById(id);
    return "redirect:/book/allBook";
    }

从零开始增加按书名查询功能

  1. BookMapper接口和BookMapper.xml

    //查询一本书
    Books queryBookByName(@Param("bookName")String bookName);
    <select id="queryBookByName" resultType="Books">
    select * from ssmbuild.books where bookName=#{bookName};
    </select>
  2. BookService接口和BookServiceImpl

    //查询一本书
    Books queryBookByName(String bookName);
    public Books queryBookByName(String bookName) {
    
        return bookMapper.queryBookByName(bookName);
    }
  3. Controller

    //查询书籍
    @RequestMapping("/queryBook")
    public String queryBook(String queryBookName,Model model){
    Books books = bookService.queryBookByName(queryBookName); List<Books> list = new ArrayList<Books>();
    list.add(books);
    if(books==null){
    list = bookService.queryAllBook();
    model.addAttribute("error","未查到");
    }
    model.addAttribute("list",list);
    return "allBook";
    }
  4. 前台页面 allBook.jsp

    <div class="col-md-8 column">
    <%--查询书籍--%>
    <form class="form-inline" action="${pageContext.request.contextPath}/book/queryBook" method="get" style="float:right">
    <span style="color: red;font-weight: bold">${error}</span>
    <input type="text" name="queryBookName" class="form-control" placeholder="请输入要查询的书的名称">
    <input type="submit" value="查询" class="btn btn-primary">
    </form> </div>

项目结构

小结及展望

这是第一个SSM整合案例,一定要烂熟于心!

SSM框架的重要程度不言而喻。

SpringMVC-08-整合SSM之CRUD的更多相关文章

  1. 整合SSM框架必备基础—SpringMVC(下)

    在上一篇文章<整合SSM框架必备基础-SpringMVC(上)>中,胖达介绍了关于SpringMVC的诞生.优势以及执行流程等理论知识点,这篇文章打算在实操中加深一下对SpringMVC的 ...

  2. SpringMVC学习05(整合ssm)

    5.整合SSM 环境要求 环境: IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 要求: 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单 ...

  3. ssm之spring+springmvc+mybatis整合初探

    1.基本目录如下  2.首先是向lib中加入相应的jar包  3.然后在web.xml中加入配置,使spring和springmvc配置文件起作用. <?xml version="1. ...

  4. spring+springmvc+mybaties整合实例

    spring+springmvc+mybaties即SSM框架整合在ecpliseee中开发:很么多西都是只有只有自己上手做,才会懂.昨晚熬了很久,才弄出来.也希望对新手有帮助!下面整理一下思路:关键 ...

  5. Spring+SpringMVC+MyBatis整合(easyUI、AdminLte3)

    实战篇(付费教程) 花了几天的时间,做了一个网站小 Demo,最终效果也与此网站类似.以下是这次实战项目的 Demo 演示. 登录页: 富文本编辑页: 图片上传: 退出登录: SSM 搭建精美实用的管 ...

  6. SpringBoot整合SSM(代码实现Demo)

    SpringBoot整合SSM 如图所示: 一.数据准备: 数据库文件:数据库名:saas-export,表名:ss_company 创建表语句: DROP TABLE IF EXISTS ss_co ...

  7. 手把手整合SSM框架

    前言 如果看过前几篇文章,对 Spring 和 MyBatis 有了一定了解,一定想上手试试.这篇文章从 0 到 1,手把手整合 SSM (Spring.Spring MVC.MyBatis). 本篇 ...

  8. shiro框架整合ssm框架

    下面我通过一个web的maven项目来讲解如何将shiro整合ssm框架,具体结构如下图 一.引入依赖的jar包 <?xml version="1.0" encoding=& ...

  9. shiro权限控制(一):shiro介绍以及整合SSM框架

    shiro安全框架是目前为止作为登录注册最常用的框架,因为它十分的强大简单,提供了认证.授权.加密和会话管理等功能 . shiro能做什么? 认证:验证用户的身份 授权:对用户执行访问控制:判断用户是 ...

  10. 框架篇:Spring+SpringMVC+Mybatis整合开发

    前言: 前面我已搭建过ssh框架(http://www.cnblogs.com/xrog/p/6359706.html),然而mybatis表示不服啊. Mybatis:"我抗议!" ...

随机推荐

  1. 使用 .NET Core 3.x 构建 RESTFUL Api (续)

    关于Entity Model vs 面向外部的Model Entity Framework Core 使用 Entity Model 用来表示数据库里面的记录. 面向外部的Model 则表示要传输的东 ...

  2. 使用nebula把联想个人云存储映射到当前网络使用的方法

    整个过程涉及三个主机一个是家里的台式机 home 内网ip为192.168.69.101一个是公司的笔记本 mac一个是有公网ip的服务器 server云存储在家里和home在同一个内网,IP地址为1 ...

  3. JS的赋值与深浅拷贝实例

    赋值 基本类型: 传值,在栈内存中的数据发生数据变化的时候,系统会自动为新的变量分配一个新的之值在栈内存中,两个变量相互独立,互不影响的 引用类型: 传址,只改变指针的指向,指向同一个对象,两个变量相 ...

  4. MMD日文乱码解决

    记录一下自己在学习MMD遇到的问题. 日文乱码是很常见的,因为很多MMD资源是日本的. 1.解压乱码 我以好压为例,其他解压软件也是可以通过设置解决的 设置

  5. Spring Security报异常 Encoded password does not look like BCrypt

    控制台报错: Encoded password does not look like BCrypt 意思是前端传回去的密码格式与数据库里的密码格式不匹配,这样即使密码正确也无法校验.自然也就无法登录. ...

  6. Python实现电脑控制,这个库让你可以控制和监控输入设备

    前言 这个库让你可以控制和监控输入设备.对于每一种输入设备,它包含一个子包来控制和监控该种输入设备:pynput.mouse:包含控制和监控鼠标或者触摸板的类.pynput.keyboard:包含控制 ...

  7. Java面试通关要点汇总整理

    简历篇 请自我介绍 请介绍项目 基础篇 基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区 ...

  8. springMVC入门(八)------拦截器

    简介 springMVC拦截器针对处理器映射器进行拦截配置 如果在某个处理器映射器中配置拦截,经过该处理器映射器映射成功的Handler最终使用该拦截器 由于springMVC支持配置多个处理器映射器 ...

  9. Java 8新特性(三):Optional类

    在上一篇介绍Stream流式数据处理的文章中提到了Optional类,这是Java 8新增的一个类,用以解决程序中常见的NullPointerException异常问题.本篇文章将详细介绍Option ...

  10. WS以及NW小世界网络的生成(MATLAB)

    WS小世界网络生成算法,一般小世界网络生成算法速度慢,节点度分布与数学推导不符,在网络仿真中造成不便,这里针对实际网络动力学仿真过程撰写了WS小世界网络的MATLAB生成算法,并考虑了矩阵化,具有较高 ...