SSM框架整合-06-SSM测试-增删改查图书

1.数据库SQL语句:

CREATE TABLE `books` (
  `bookID` int(11) NOT NULL AUTO_INCREMENT COMMENT '图书ID',
  `bookName` varchar(255) NOT NULL COMMENT '图书名称',
  `bookCounts` int(11) NOT NULL COMMENT '图书数量',
  `detail` varchar(255) NOT NULL COMMENT '图书介绍',
  PRIMARY KEY (`bookID`),
  KEY `bookID` (`bookID`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of books
-- ----------------------------
INSERT INTO `books` VALUES ('1', 'Java编程思想', '35', '本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。
');
INSERT INTO `books` VALUES ('6', '深入理解Java虚拟机', '47', '这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典,繁体版在台湾也颇受欢迎。自2011年上市以来,前两个版本累计印刷36次,销量超过30万册,两家主要网络书店的评论近90000条,内容上近乎零差评,是原创计算机图书领域不可逾越的丰碑。');
INSERT INTO `books` VALUES ('7', '数据结构与算法分析:Java语言描述', '88', '随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。《数据结构与算法分析:Java语言描述(第2版)》把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。');

2.SSM测试-查询所有书籍

2.1BookController类编写

在com.wanjl.controller包中创建BookController类,并编写查询所有书籍方法:

package com.wanjl.controller;

import com.wanjl.pojo.Books;
import com.wanjl.service.BookService;
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.RequestMapping;

import java.util.List;

/**
 * @Controller :
 * 用于标记在一个类上,使用它标记的类就是一个SpringMvc Controller对象,
 * 分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了@RequestMapping注解。
 * @RequestMapping("/book")
 *  在Spring MVC 中使用@RequestMapping来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置
 *
 */
@Controller
@RequestMapping("/book")

public class BookController {
    /**
     * @Autowired 是用在JavaBean中的注解,通过byType形式,用来给指定的字段或方法注入所需的外部资源。
     *@Qualifier 使用它可以消除需要注入哪个 bean 的问题。
     */
    @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.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>

2.3书籍列表页面 allBook.jsp

在webapp下WEB-INF目录中创建jsp目录,在jsp目录中创建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, initial-scale=1.0">
   <!-- 引入 Bootstrap -->
   <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>

<div class="container-fluid">

   <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>

2.4运行Tomcat测试,测试是否显示所有书籍信息

ps:需要在Tomcat中做如下配置,否则可能出现404错误,点击进入Tomcat设置界面:

 成功查询出所有书籍信息,查询所有书籍测试成功:

3.SSM测试-添加图书

3.1编写addBook.jsp页面

在jsp目录中创建addBook.jsp文件,编写jsp页面

<%--
  Created by IntelliJ IDEA.
  User: 50666
  Date: 2022/1/9
  Time: 14:32
  To change this template use File | Settings | File Templates.
--%>
<%@ 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, initial-scale=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>

3.2在controller层中BookController类中编写跳转页面的方法

    /**
     * 跳转页面的方法
     * @return  跳转到addBook页面
     */
    @RequestMapping("/toAddBook")
    public String toAddPager(){
        return "addBook";
    }

3.3在controller层中BookController类中编写添加图书信息的方法

    /**
     * 添加图书信息的方法
     * @param books 图书对象
     * @return 重定向到显示所有图书信息页面
     */
    @RequestMapping("/addBook")
    public String addBook(Books books){
        System.out.println(books);
        bookService.addBook(books);
        System.out.println(books);
        return "redirect:/book/allBook";
    }

4.SSM测试-修改图书

4.1编写updateBook.jsp页面

在jsp页面中创建updateBook.jsp文件,编写jsp页面

<%--
  Created by IntelliJ IDEA.
  User: 50666
  Date: 2022/1/9
  Time: 14:56
  To change this template use File | Settings | File Templates.
--%>
<%@ 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, initial-scale=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>

4.2在controller层中BookController类中编写跳转页面的方法

    /**
     * 跳转到更新书籍页面,并根据图书id查询出图书信息并显示
     * @param model
     * @param id    图书id,对应着allBook.jsp中修改按钮book/toUpdateBook?id=${book.getBookID()}中的id
     * @return 跳转到更新页面
     */
    @RequestMapping("toUpdateBook")
    public String toUpdateBook(Model model,int id){
        Books book = bookService.queryBookById(id);
        System.out.println(book);
        model.addAttribute("book",book);
        return "updateBook";
    }

4.3在controller层中BookController类中编写修改图书信息的方法

    /**
     * 更新书籍信息,修改完图书信息后再次根据ID查询
     * @param model
     * @param book
     * @return 重定向到书籍列表页面
     */
    @RequestMapping("/updateBook")
    public String updateBook(Model model,Books book){
        bookService.updateBook(book);
        return "redirect:/book/allBook";
    }

5.SSM测试-删除图书

在controller层中BookController类中编写删除书籍的方法

    /**
     * 删除图书的方法
     * @param id    根据ID获取书籍信息,完成删除
     * @return 返回到书籍列表页面
     */
    @RequestMapping("/del/{bookID}")
    public String deleteBook(@PathVariable("bookID") int id){
        bookService.deleteBookById(id);
        return "redirect:/book/allBook";
    }

增删改查功能测试结束,SSM整合框架搭建成功

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架是指Spring + SpringMVC + MyBatis的组合,它是一种常用的Java Web开发框架。下面是SSM框架中的增删的介绍: 1. 增加(Create):在SSM框架中,可以通过MyBatis的Mapper接口定义插入数据的方法,并在对应的Mapper XML文件中编写SQL语句实现数据的插入操作。在SpringMVC中,可以通过Controller接收前端传递的数据,并调用Service层的方法将数据传递给Mapper进行插入操作。 2. 询(Retrieve):在SSM框架中,可以通过MyBatis的Mapper接口定义询数据的方法,并在对应的Mapper XML文件中编写SQL语句实现数据的询操作。在SpringMVC中,可以通过Controller接收前端传递的询条件,并调用Service层的方法将询条件传递给Mapper进行询操作,最后将询结果返回给前端。 3. 更新(Update):在SSM框架中,可以通过MyBatis的Mapper接口定义更新数据的方法,并在对应的Mapper XML文件中编写SQL语句实现数据的更新操作。在SpringMVC中,可以通过Controller接收前端传递的更新数据,并调用Service层的方法将更新数据传递给Mapper进行更新操作。 4. 删除(Delete):在SSM框架中,可以通过MyBatis的Mapper接口定义删除数据的方法,并在对应的Mapper XML文件中编写SQL语句实现数据的删除操作。在SpringMVC中,可以通过Controller接收前端传递的删除条件,并调用Service层的方法将删除条件传递给Mapper进行删除操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值