ssm-book 整合案例
一:环境及要求
环境:
- IDEA最新版
- MySQL 5.7.19
- Tomcat 9
- Maven 3.6
要求:
- 需要掌握 MyBatis;Spring;SpringMVC;MySQL数据库以及简单的前端知识
二:项目编码
1:搭建数据库
1-1:创建一个数据库

- 1 CREATE DATABASE `ssm-books`;
- 2
- 3 USE `ssm-books`;
- 4
- 5 CREATE TABLE `books` (
- 6 `bookId` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',
- 7 `bookName` VARCHAR(100) NOT NULL COMMENT '书名',
- 8 `bookNumber` INT(11) NOT NULL COMMENT '数量',
- 9 `bookPrice` INT(20) NOT NULL COMMENT '价格',
- 10 KEY `bookId` (`bookId`)
- 11 ) ENGINE=INNODB DEFAULT CHARSET=utf8
- 12
- 13 INSERT INTO `books`(`bookId`,`bookName`,`bookNumber`,`bookPrice`)VALUES
- 14 (1,'西游记',5,55),
- 15 (2,'水浒传',6,66),
- 16 (3,'三国演义',7,77);

1-2:创建数据库需要的database.properties
- jdbc.Driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm-books?useSSL=true&useUnicode=true&characterEncoding=utf-8
- jdbc.username=root
- jdbc.password=123456
1-3:导入数据库驱动包
- 1 <dependency>
- 2 <groupId>mysql</groupId>
- 3 <artifactId>mysql-connector-java</artifactId>
- 4 <version>5.1.47</version>
- 5 </dependency>
1-4:IDEA关联数据库
2:编写数据库对应的实体类及Dao层
2-1:实体类 com.qsh.pojo.Books

- 1 public class Books {
- 2
- 3 private int bookId;
- 4 private String bookName;
- 5 private int bookNumber;
- 6 private int bookPrice;
- 7
- 8 public Books() {
- 9 }
- 10
- 11 public Books(int bookId, String bookName, int bookNumber, int bookPrice) {
- 12 this.bookId = bookId;
- 13 this.bookName = bookName;
- 14 this.bookNumber = bookNumber;
- 15 this.bookPrice = bookPrice;
- 16 }
- 17
- 18 public int getBookId() {
- 19 return bookId;
- 20 }
- 21
- 22 public void setBookId(int bookId) {
- 23 this.bookId = bookId;
- 24 }
- 25
- 26 public String getBookName() {
- 27 return bookName;
- 28 }
- 29
- 30 public void setBookName(String bookName) {
- 31 this.bookName = bookName;
- 32 }
- 33
- 34 public int getBookNumber() {
- 35 return bookNumber;
- 36 }
- 37
- 38 public void setBookNumber(int bookNumber) {
- 39 this.bookNumber = bookNumber;
- 40 }
- 41
- 42 public int getBookPrice() {
- 43 return bookPrice;
- 44 }
- 45
- 46 public void setBookPrice(int bookPrice) {
- 47 this.bookPrice = bookPrice;
- 48 }
- 49
- 50 @Override
- 51 public String toString() {
- 52 return "Books{" +
- 53 "bookId=" + bookId +
- 54 ", bookName='" + bookName + '\'' +
- 55 ", bookNumber=" + bookNumber +
- 56 ", bookPrice=" + bookPrice +
- 57 '}';
- 58 }
- 59 }

2-2:Dao层接口 com.qsh.dao.BookDao

- 1 import org.apache.ibatis.annotations.Param;
- 2 import com.qsh.pojo.Books;
- 3 import java.util.List;
- 4
- 5 public interface BookDao {
- 6
- 7 //增加books
- 8 int addBook(Books books);
- 9
- 10 //通过id删除books
- 11 int delBookById(@Param("bookId") int bookId);
- 12
- 13 //更新books
- 14 int upBook(Books books);
- 15
- 16 //通过id获取books
- 17 Books allBookById(@Param("bookId") int bookId);
- 18
- 19 //获取全部books
- 20 List<Books> allBook();
- 21 }

2-3:编写接口对应的Mapper文件时需要导入MyBatis的包
- 1 <dependency>
- 2 <groupId>org.mybatis</groupId>
- 3 <artifactId>mybatis</artifactId>
- 4 <version>3.5.1</version>
- 5 </dependency>
2-4:编写BookMapper.xml文件

- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.qsh.dao.BookDao">
<span style="color: #008000;"><!--</span><span style="color: #008000;">1.增加books</span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">insert </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="addBook"</span><span style="color: #ff0000;"> parameterType</span><span style="color: #0000ff;">="Books"</span><span style="color: #0000ff;">></span><span style="color: #000000;">
insert into books (bookId,bookName,bookNumber,bookPrice)
values (#{bookId},#{bookName},#{bookNumber},#{bookPrice})
</span><span style="color: #0000ff;"></</span><span style="color: #800000;">insert</span><span style="color: #0000ff;">></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;">2.通过id删除books</span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">delete </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="delBookById"</span><span style="color: #ff0000;"> parameterType</span><span style="color: #0000ff;">="Books"</span><span style="color: #0000ff;">></span><span style="color: #000000;">
delete from books where bookId=#{bookId}
</span><span style="color: #0000ff;"></</span><span style="color: #800000;">delete</span><span style="color: #0000ff;">></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;">3.更新books</span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">update </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="upBook"</span><span style="color: #ff0000;"> parameterType</span><span style="color: #0000ff;">="Books"</span><span style="color: #0000ff;">></span><span style="color: #000000;">
update books set bookName=#{bookName},bookNumber=#{bookNumber},bookPrice=#{bookPrice}
where bookId=#{bookId}
</span><span style="color: #0000ff;"></</span><span style="color: #800000;">update</span><span style="color: #0000ff;">></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;">4.通过id获取books</span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">select </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="allBookById"</span><span style="color: #ff0000;"> resultType</span><span style="color: #0000ff;">="Books"</span><span style="color: #0000ff;">></span><span style="color: #000000;">
select * from books where bookId=#{bookId}
</span><span style="color: #0000ff;"></</span><span style="color: #800000;">select</span><span style="color: #0000ff;">></span>
<span style="color: #008000;"><!--</span><span style="color: #008000;">5.获取全部books</span><span style="color: #008000;">--></span>
<span style="color: #0000ff;"><</span><span style="color: #800000;">select </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="allBook"</span><span style="color: #ff0000;"> resultType</span><span style="color: #0000ff;">="Books"</span><span style="color: #0000ff;">></span><span style="color: #000000;">
select * from books
</span><span style="color: #0000ff;"></</span><span style="color: #800000;">select</span><span style="color: #0000ff;">></span>
</mapper>

2-5:编写Mybatis-config.xml配置文件;配置别名,注册映射文件

- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <!--别名-->
- <typeAliases>
- <package name="com.qsh.pojo"/>
- </typeAliases>
- <!--关联映射文件-->
- <mappers>
- <mapper resource="com/qsh/dao/BookMapper.xml"/>
- </mappers>
- </configuration>

3:编写Service层的接口和实现类
3-1:接口 com.qsh.service.BookService

- 1 import com.qsh.pojo.Books;
- 2 import org.apache.ibatis.annotations.Param;
- 3 import java.util.List;
- 4
- 5 public interface BookService {
- 6
- 7 //增加books
- 8 int addBook(Books books);
- 9
- 10 //通过id删除books
- 11 int delBookById(@Param("bookId") int bookId);
- 12
- 13 //更新books
- 14 int upBook(Books books);
- 15
- 16 //通过id获取books
- 17 Books allBookById(@Param("bookId") int bookId);
- 18
- 19 //获取全部books
- 20 List<Books> allBook();
- 21 }

3-2:实现类 com.qsh.service.BookServiceImpl

- 1 import com.qsh.dao.BookDao;
- 2 import com.qsh.pojo.Books;
- 3 import java.util.List;
- 4
- 5 public class BookServiceImpl implements BookService {
- 6
- 7 //组合Dao层,设置一个set接口,方便spring管理
- 8 private BookDao bookDao;
- 9
- 10 public void setBookDao(BookDao bookDao) {
- 11 this.bookDao = bookDao;
- 12 }
- 13
- 14 @Override
- 15 public int addBook(Books books) {
- 16
- 17 return bookDao.addBook(books);
- 18 }
- 19
- 20 @Override
- 21 public int delBookById(int bookId) {
- 22 return bookDao.delBookById(bookId);
- 23 }
- 24
- 25 @Override
- 26 public int upBook(Books books) {
- 27
- 28 return bookDao.upBook(books);
- 29 }
- 30
- 31 @Override
- 32 public Books allBookById(int bookId) {
- 33
- 34 return bookDao.allBookById(bookId);
- 35 }
- 36
- 37 @Override
- 38 public List<Books> allBook() {
- 39 return bookDao.allBook();
- 40 }
- 41 }

4:Spring整合MyBatis
4-1:我们这里数据源使用c3p0连接池;先导入相关jar包

- 1 <!--1.mybatis-spring整合包 -->
- 2 <dependency>
- 3 <groupId>org.mybatis</groupId>
- 4 <artifactId>mybatis-spring</artifactId>
- 5 <version>1.3.1</version>
- 6 </dependency>
- 7
- 8 <!-- 2.spring mvc和 spring 系列包 -->
- 9 <dependency>
- 10 <groupId>org.springframework</groupId>
- 11 <artifactId>spring-webmvc</artifactId>
- 12 <version>4.3.24.RELEASE</version>
- 13 </dependency>
- 14 <dependency>
- 15 <groupId>org.springframework</groupId>
- 16 <artifactId>spring-jdbc</artifactId>
- 17 <version>4.3.24.RELEASE</version>
- 18 </dependency>
- 19
- 20 <!-- 3.第三方数据源:c3p0 -->
- 21 <dependency>
- 22 <groupId>com.mchange</groupId>
- 23 <artifactId>c3p0</artifactId>
- 24 <version>0.9.5.2</version>
- 25 </dependency>

4-2:配置spring-dao.xml

- 1 <?xml version="1.0" encoding="UTF-8" ?>
- 2 <beans xmlns="http://www.springframework.org/schema/beans"
- 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 4 xmlns:context="http://www.springframework.org/schema/context"
- 5 xsi:schemaLocation="http://www.springframework.org/schema/beans
- 6 http://www.springframework.org/schema/beans/spring-beans.xsd
- 7 http://www.springframework.org/schema/context
- 8 http://www.springframework.org/schema/context/spring-context.xsd">
- 9
- 10 <!-- 1.关联数据库-->
- 11 <context:property-placeholder location="classpath:database.properties"/>
- 12
- 13 <!-- 2.数据库连接池 --><!-- c3p0:自动化操作(自动的加载配置文件 并且设置到对象里面)-->
- 14 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
- 15 <!-- 2-1.配置连接池属性 -->
- 16 <property name="driverClass" value="${jdbc.Driver}"/>
- 17 <property name="jdbcUrl" value="${jdbc.url}"/>
- 18 <property name="user" value="${jdbc.username}"/>
- 19 <property name="password" value="${jdbc.password}"/>
- 20 </bean>
- 21
- 22 <!-- 3.配置SqlSessionFactory对象-->
- 23 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- 24 <!-- 3-1.注入数据库连接池-->
- 25 <property name="dataSource" ref="dataSource"/>
- 26 <!-- 3-2.配置mybatis全局配置文件:mybatis-config.xml-->
- 27 <property name="configLocation" value="classpath:mybatis-config.xml"/>
- 28 </bean>
- 29
- 30 <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中-->
- 31 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- 32 <!-- 4-1.注入sqlSessionFactory-->
- 33 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
- 34 <!-- 4-2.给出需要扫描Dao接口包-->
- 35 <property name="basePackage" value="com.qsh.dao"/>
- 36 </bean>
- 37
- 38 </beans>

5:Spring整合service层
5-1:配置spring-service.xml

- 1 <?xml version="1.0" encoding="UTF-8"?>
- 2 <beans xmlns="http://www.springframework.org/schema/beans"
- 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 4 xmlns:context="http://www.springframework.org/schema/context"
- 5 xsi:schemaLocation="http://www.springframework.org/schema/beans
- 6 http://www.springframework.org/schema/beans/spring-beans.xsd
- 7 http://www.springframework.org/schema/context
- 8 http://www.springframework.org/schema/context/spring-context.xsd">
- 9
- 10 <!-- 1.扫描service相关的bean-->
- 11 <context:component-scan base-package="com.qsh.service"/>
- 12
- 13 <!-- 2.BookServiceImpl注入到IOC容器中-->
- 14 <bean id="BookServiceImpl" class="com.qsh.service.BookServiceImpl">
- 15 <property name="bookDao" ref="bookDao"/>
- 16 </bean>
- 17
- 18 </beans>

6:SpringMVC相关配置
6-1:配置web.xml

- 1 <?xml version="1.0" encoding="UTF-8"?>
- 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 3 xmlns="http://java.sun.com/xml/ns/javaee"
- 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- 5 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- 6 id="WebApp_ID" version="3.0">
- 7
- 8 <!-- 1.注册DispatcherServlet-->
- 9 <servlet>
- 10 <servlet-name>DispatcherServlet</servlet-name>
- 11 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- 12
- 13 <!-- 2.关联spring配置文件-->
- 14 <init-param>
- 15 <param-name>contextConfigLocation</param-name>
- 16 <param-value>classpath:applicationContext.xml</param-value>
- 17 </init-param>
- 18 <load-on-startup>1</load-on-startup>
- 19 </servlet>
- 20 <servlet-mapping>
- 21 <servlet-name>DispatcherServlet</servlet-name>
- 22 <url-pattern>/</url-pattern>
- 23 </servlet-mapping>
- 24
- 25
- 26 <!-- 3.处理乱码问题-->
- 27 <filter>
- 28 <filter-name>encodingFilter</filter-name>
- 29 <filter-class>
- 30 org.springframework.web.filter.CharacterEncodingFilter
- 31 </filter-class>
- 32 <init-param>
- 33 <param-name>encoding</param-name>
- 34 <param-value>utf-8</param-value>
- 35 </init-param>
- 36 </filter>
- 37 <filter-mapping>
- 38 <filter-name>encodingFilter</filter-name>
- 39 <url-pattern>/*</url-pattern>
- 40 </filter-mapping>
- 41
- 42 </web-app>

6-2:配置spring-mvc.xml

- 1 <?xml version="1.0" encoding="UTF-8" ?>
- 2 <beans xmlns="http://www.springframework.org/schema/beans"
- 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 4 xmlns:context="http://www.springframework.org/schema/context"
- 5 xmlns:mvc="http://www.springframework.org/schema/mvc"
- 6 xsi:schemaLocation="http://www.springframework.org/schema/beans
- 7 http://www.springframework.org/schema/beans/spring-beans.xsd
- 8 http://www.springframework.org/schema/context
- 9 http://www.springframework.org/schema/context/spring-context.xsd
- 10 http://www.springframework.org/schema/mvc
- 11 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
- 12
- 13 <!-- 1.开启springMVC注解模式-->
- 14 <mvc:annotation-driven/>
- 15
- 16 <!-- 2.静态资源默认servlet设置-->
- 17 <mvc:default-servlet-handler/>
- 18
- 19 <!-- 3.配置jsp 显示ViewResolver-->
- 20 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- 21 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
- 22 <property name="prefix" value="/WEB-INF/jsp/"/>
- 23 <property name="suffix" value=".jsp"/>
- 24 </bean>
- 25
- 26 <!-- 4.扫描web相关的bean-->
- 27 <context:component-scan base-package="com.qsh.controller"/>
- 28
- 29 </beans>

7:Spring配置整合文件,applicationContext.xml
7-1:我们将前面的spring-dao.xml spring-service.xml spring-mvc.xml 三个配置文件导入一个大的配置文件中,使其项目结构更加清晰,也更好管理

- 1 <?xml version="1.0" encoding="UTF-8" ?>
- 2 <beans xmlns="http://www.springframework.org/schema/beans"
- 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 4 xsi:schemaLocation="http://www.springframework.org/schema/beans
- 5 http://www.springframework.org/schema/beans/spring-beans.xsd">
- 6
- 7 <import resource="spring/spring-dao.xml"/>
- 8 <import resource="spring/spring-mvc.xml"/>
- 9 <import resource="spring/spring-service.xml"/>
- 10
- 11 </beans>

8:编写BookController类
8-1:导入jsp和servlet的包

- 1 <!--1.servlet -->
- 2 <dependency>
- 3 <groupId>javax.servlet</groupId>
- 4 <artifactId>javax.servlet-api</artifactId>
- 5 <version>3.0.1</version>
- 6 </dependency>
- 7
- 8 <!-- 2.jsp -->
- 9 <dependency>
- 10 <groupId>javax.servlet.jsp</groupId>
- 11 <artifactId>jsp-api</artifactId>
- 12 <version>2.2</version>
- 13 </dependency>
- 14
- 15 <!-- 3.JSTL -->
- 16 <dependency>
- 17 <groupId>javax.servlet</groupId>
- 18 <artifactId>jstl</artifactId>
- 19 <version>1.2</version>
- 20 </dependency>

8-2:com.qsh.controller.BookController

- 1 import com.qsh.pojo.Books;
- 2 import com.qsh.service.BookService;
- 3 import org.springframework.beans.factory.annotation.Autowired;
- 4 import org.springframework.beans.factory.annotation.Qualifier;
- 5 import org.springframework.stereotype.Controller;
- 6 import org.springframework.ui.Model;
- 7 import org.springframework.web.bind.annotation.PathVariable;
- 8 import org.springframework.web.bind.annotation.RequestMapping;
- 9 import java.util.List;
- 10
- 11 @Controller
- 12 @RequestMapping("/book")
- 13 public class BookController {
- 14
- 15 @Autowired
- 16 @Qualifier("BookServiceImpl")
- 17 private BookService bookService;
- 18
- 19 //展示全部书籍
- 20 @RequestMapping("/allBook")
- 21 public String allBook(Model model){
- 22 List<Books> list = bookService.allBook();
- 23 model.addAttribute("list",list);
- 24 return "allBook";
- 25 }
- 26
- 27 //跳转到新增书籍页面
- 28 @RequestMapping("/toAddBook")
- 29 public String toAddBook(){
- 30 return "addBook";
- 31 }
- 32
- 33 //增加书籍页面
- 34 @RequestMapping("/addBook")
- 35 public String addBook(Books books){
- 36 bookService.addBook(books);
- 37 return "redirect:/book/allBook"; //重定向到首页
- 38 }
- 39
- 40 //跳转到修改页面
- 41 @RequestMapping("/toUpBook")
- 42 public String toUpdateBook(int id,Model model){
- 43 Books books = bookService.allBookById(id);
- 44 model.addAttribute("book",books);
- 45 return "upBook";
- 46 }
- 47
- 48 //修改书籍
- 49 @RequestMapping("/upBook")
- 50 public String updateBook(Books books,Model model){
- 51 bookService.upBook(books);
- 52 //更新最新的书籍
- 53 Books books1 = bookService.allBookById(books.getBookId());
- 54 model.addAttribute("books",books1);
- 55 return "redirect:/book/allBook"; //重定向到首页
- 56 }
- 57
- 58 //删除书籍,请使用restful风格
- 59 @RequestMapping("/del/{bookID}")
- 60 public String deleteBook(@PathVariable("bookID") int id){
- 61 bookService.delBookById(id);
- 62 return "redirect:/book/allBook"; //重定向到首页
- 63 }
- 64 }

9:前端视图层
9-1:index.jsp

- 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
- 2 <!DOCTYPE HTML>
- 3 <html>
- 4 <head>
- 5 <title>首页</title>
- 6 <style type="text/css">
- 7 a {
- 8 text-decoration: none;
- 9 color: black;
- 10 font-size: 18px;
- 11 }
- 12 h3 {
- 13 width: 180px;
- 14 height: 38px;
- 15 margin: 100px auto;
- 16 text-align: center;
- 17 line-height: 38px;
- 18 background: deepskyblue;
- 19 border-radius: 4px;
- 20 }
- 21 </style>
- 22 </head>
- 23 <body>
- 24
- 25 <h3>
- 26 <a href="${pageContext.request.contextPath}/book/allBook">进入书籍列表</a>
- 27 </h3>
- 28
- 29 </body>
- 30 </html>

9-2:allbook.jsp

- 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- 2 <%--使用JSTL标签--%>
- 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 4
- 5 <html>
- 6 <head>
- 7 <title>全部书籍</title>
- 8
- 9 <%--引用BootStarp--%>
- 10 <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
- 11
- 12 </head>
- 13 <body>
- 14
- 15 <div class="container">
- 16
- 17 <%--标题--%>
- 18 <div class="row clearfix">
- 19 <div class="col-md-12 column">
- 20 <div class="page-header">
- 21 <h1>
- 22 <small>书籍列表--显示所有书籍</small>
- 23 </h1>
- 24 </div>
- 25 </div>
- 26 </div>
- 27
- 28 <%--增加--%>
- 29 <div class="row">
- 30 <div class="col-md-4 column">
- 31 <a class="btn btn-primary" href="${pageContext.request.contextPath}/book/toAddBook">新增</a>
- 32 </div>
- 33 </div>
- 34
- 35 <%--展示页面:表格,修改,删除--%>
- 36 <div class="row clearfix">
- 37 <div class="col-md-12 column">
- 38 <table class="table table-hover table-striped">
- 39
- 40 <%--表头--%>
- 41 <thead>
- 42 <tr>
- 43 <th>书籍编号</th>
- 44 <th>书籍名称</th>
- 45 <th>书籍数量</th>
- 46 <th>书籍价格</th>
- 47 <%--操作:修改,删除--%>
- 48 <th>操作</th>
- 49 </tr>
- 50 </thead>
- 51 <%--表的内容--%>
- 52 <tbody>
- 53 <c:forEach var="book" items="${list}">
- 54 <tr>
- 55 <td>${book.getBookId()}</td>
- 56 <td>${book.getBookName()}</td>
- 57 <td>${book.getBookNumber()}</td>
- 58 <td>${book.getBookPrice()}</td>
- 59 <td>
- 60 <a href="${pageContext.request.contextPath}/book/toUpBook?id=${book.getBookId()}">更改</a> |
- 61 <a href="${pageContext.request.contextPath}/book/del/${book.getBookId()}">删除</a>
- 62 </td>
- 63 </tr>
- 64 </c:forEach>
- 65
- 66 </tbody>
- 67
- 68 </table>
- 69 </div>
- 70 </div>
- 71
- 72 </div>
- 73
- 74 </body>
- 75 </html>

9-3:addBook.jsp

- 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- 2 <html>
- 3 <head>
- 4 <title>新增书籍</title>
- 5 <%--引用BootStarp--%>
- 6 <link href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
- 7
- 8 </head>
- 9 <body>
- 10
- 11 <%--显示要增加的书籍信息--%>
- 12 <h1>增加书籍</h1>
- 13
- 14 <form method="post" action="${pageContext.request.contextPath}/book/addBook">
- 15 书籍名称:<input type="text" name="bookName"> <br/><br/>
- 16 书籍数量:<input type="text" name="bookNumber"> <br/><br/>
- 17 书籍价格:<input type="text" name="bookPrice"> <br/><br/>
- 18 <input type="submit"/>
- 19 </form>
- 20
- 21 </body>
- 22 </html>

9-4:upBook.jsp

- 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- 2 <html>
- 3 <head>
- 4 <title>修改书籍</title>
- 5 </head>
- 6 <body>
- 7
- 8 <%--书籍原来的信息,修改按钮--%>
- 9 <h1>修改书籍信息</h1>
- 10 <hr>
- 11
- 12 <form action="${pageContext.request.contextPath}/book/upBook" method="post">
- 13 <%--id--%>
- 14 <input type="hidden" name="bookId" value="${book.getBookId()}"/>
- 15 书籍名称:<input type="text" name="bookName" value="${book.getBookName()}"> <br/><br/>
- 16 书籍数量:<input type="text" name="bookNumber" value="${book. getBookNumber()}"> <br/><br/>
- 17 书籍价格:<input type="text" name="bookPrice" value="${book.bookPrice}"> <br/><br/>
- 18 <input type="submit" value="提交"/>
- 19 </form>
- 20
- 21 </body>
- 22 </html>

10:Maven文件汇总
记得Maven资源导入问题
- 1 <?xml version="1.0" encoding="UTF-8"?>
- 2
- 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- 5 <modelVersion>4.0.0</modelVersion>
- 6
- 7 <groupId>com.qsh</groupId>
- 8 <artifactId>ssm-book-demo</artifactId>
- 9 <version>1.0-SNAPSHOT</version>
- 10 <packaging>war</packaging>
- 11
- 12 <name>ssm-book-demo Maven Webapp</name>
- 13 <!-- FIXME change it to the project's website -->
- 14 <url>http://www.example.com</url>
- 15
- 16 <properties>
- 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- 18 <maven.compiler.source>1.7</maven.compiler.source>
- 19 <maven.compiler.target>1.7</maven.compiler.target>
- 20 </properties>
- 21
- 22 <dependencies>
- 23 <dependency>
- 24 <groupId>junit</groupId>
- 25 <artifactId>junit</artifactId>
- 26 <version>4.11</version>
- 27 <scope>test</scope>
- 28 </dependency>
- 29
- 30 <!-- 1-1.mybatis的包-->
- 31 <dependency>
- 32 <groupId>org.mybatis</groupId>
- 33 <artifactId>mybatis</artifactId>
- 34 <version>3.5.1</version>
- 35 </dependency>
- 36
- 37 <!-- 1-2.连接数据库的驱动包-->
- 38 <dependency>
- 39 <groupId>mysql</groupId>
- 40 <artifactId>mysql-connector-java</artifactId>
- 41 <version>5.1.47</version>
- 42 </dependency>
- 43
- 44 <!-- 2-1.mybatis-spring整合包-->
- 45 <dependency>
- 46 <groupId>org.mybatis</groupId>
- 47 <artifactId>mybatis-spring</artifactId>
- 48 <version>1.3.1</version>
- 49 </dependency>
- 50
- 51 <!-- 2-2.spring mvc和 spring 系列包-->
- 52 <dependency>
- 53 <groupId>org.springframework</groupId>
- 54 <artifactId>spring-webmvc</artifactId>
- 55 <version>4.3.24.RELEASE</version>
- 56 </dependency>
- 57 <dependency>
- 58 <groupId>org.springframework</groupId>
- 59 <artifactId>spring-jdbc</artifactId>
- 60 <version>4.3.24.RELEASE</version>
- 61 </dependency>
- 62
- 63 <!-- 2-3.第三方数据源:c3p0-->
- 64 <dependency>
- 65 <groupId>com.mchange</groupId>
- 66 <artifactId>c3p0</artifactId>
- 67 <version>0.9.5.2</version>
- 68 </dependency>
- 69
- 70 <!-- 3-1.servlet-->
- 71 <dependency>
- 72 <groupId>javax.servlet</groupId>
- 73 <artifactId>javax.servlet-api</artifactId>
- 74 <version>3.0.1</version>
- 75 </dependency>
- 76
- 77 <!-- 3-2.jsp-->
- 78 <dependency>
- 79 <groupId>javax.servlet.jsp</groupId>
- 80 <artifactId>jsp-api</artifactId>
- 81 <version>2.2</version>
- 82 </dependency>
- 83
- 84 <!-- 3-3.JSTL-->
- 85 <dependency>
- 86 <groupId>javax.servlet</groupId>
- 87 <artifactId>jstl</artifactId>
- 88 <version>1.2</version>
- 89 </dependency>
- 90
- 91 </dependencies>
- 92
- 93 <build>
- 94
- 95 <!--希望maven在导出项目的时候,能够将我们的配置及资源导出-->
- 96 <resources>
- 97 <resource>
- 98 <directory>src/main/java</directory>
- 99 <includes>
- 100 <include>**/*.properties</include>
- 101 <include>**/*.xml</include>
- 102 </includes>
- 103 <filtering>false</filtering>
- 104 </resource>
- 105 <resource>
- 106 <directory>src/main/resources</directory>
- 107 <includes>
- 108 <include>**/*.properties</include>
- 109 <include>**/*.xml</include>
- 110 </includes>
- 111 <filtering>false</filtering>
- 112 </resource>
- 113 </resources>
- 114
- 115 <finalName>ssm-book-demo</finalName>
- 116 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
- 117 <plugins>
- 118 <plugin>
- 119 <artifactId>maven-clean-plugin</artifactId>
- 120 <version>3.1.0</version>
- 121 </plugin>
- 122 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
- 123 <plugin>
- 124 <artifactId>maven-resources-plugin</artifactId>
- 125 <version>3.0.2</version>
- 126 </plugin>
- 127 <plugin>
- 128 <artifactId>maven-compiler-plugin</artifactId>
- 129 <version>3.8.0</version>
- 130 </plugin>
- 131 <plugin>
- 132 <artifactId>maven-surefire-plugin</artifactId>
- 133 <version>2.22.1</version>
- 134 </plugin>
- 135 <plugin>
- 136 <artifactId>maven-war-plugin</artifactId>
- 137 <version>3.2.2</version>
- 138 </plugin>
- 139 <plugin>
- 140 <artifactId>maven-install-plugin</artifactId>
- 141 <version>2.5.2</version>
- 142 </plugin>
- 143 <plugin>
- 144 <artifactId>maven-deploy-plugin</artifactId>
- 145 <version>2.8.2</version>
- 146 </plugin>
- 147 </plugins>
- 148 </pluginManagement>
- 149 </build>
- 150 </project>
Maven文件汇总
三:项目结构
四:配置Tomcat运行环境
五:测试
1:首页
2:全部列表页
3:增加页面
4:修改页面
ssm-book 整合案例的更多相关文章
- Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例
Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...
- Java基础-SSM之Spring和Mybatis整合案例
Java基础-SSM之Spring和Mybatis整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在之前我分享过mybatis和Spring的配置案例,想必大家对它们的 ...
- 08 SSM整合案例(企业权限管理系统):07.订单操作
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 07.订单操作 SSM订单操作 ...
- 08 SSM整合案例(企业权限管理系统):05.SSM整合案例的基本介绍
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户和角色操作 10.权限关联 11.AOP日志 05.SSM整合案例的基本介绍 ...
- 08 SSM整合案例(企业权限管理系统):06.产品操作
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 06.产品操作 SSM 环境搭 ...
- 08 SSM整合案例(企业权限管理系统):09.用户和角色操作
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户和角色操作 10.权限关联 11.AOP日志 09.用户和角色操作 1. 用 ...
- 08 SSM整合案例(企业权限管理系统):08.权限控制
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户操作 10.权限关联与控制 11.AOP日志 08.权限控制 SSM权限操作 ...
- 08 SSM整合案例(企业权限管理系统):10.权限关联与控制
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户操作 10.权限关联与控制 11.AOP日志 10.权限关联与控制 1.用户 ...
- 08 SSM整合案例(企业权限管理系统):11.AOP日志
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户和角色操作 10.权限关联 11.AOP日志 11.AOP日志 1.数据库与 ...
- SSM整合案例:图书管理系统
目录 SSM整合案例:图书管理系统 1.搭建数据库环境 2.基本环境搭建 2.1.新建一个Maven项目,起名为:ssmbuild,添加web的支持 2.2.导入pom的相关依赖 2.3.Maven静 ...
随机推荐
- Jenkins 邮件发送
1.jenkins新建任务 2.配置svn 3.maven项目构建配置pom.xml 使用maven命令 clean test 构建前清除: 4.系统管理 => 插件管理 =>可选安装邮件 ...
- Java测试开发--MySql之C3P0连接池(八)
连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...
- PTA 7-1 邻接矩阵表示法创建无向图 (20分)
PTA 7-1 邻接矩阵表示法创建无向图 (20分) 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶 ...
- Java 关键字之 final
欢迎学习 Java 基础文章系列之 final 关键字 final 代表什么意思? final 通常是指无法被改变或者不能被改变的,什么情况下不想被改变呢? 不想改变可能有两种原因:设计或者效率. 在 ...
- XMLHttpRequest—>Promise
XMLHttpRequest.open() 初始化 HTTP 请求参数 语法open(method, url, async, username, password) method 参数是用于请求的 H ...
- 基于linux与线程池实现文件管理
项目要求 1.基本 用线程池实现一个大文件夹的拷贝,大文件夹嵌套很多小文件:实现复制到指定文件夹的全部文件夹. 2.扩充功能 显示进度条:拷贝耗时统计:类似linux的tree,不能直接用system ...
- NOIP2021游记(退役记)
11月 13日 停课了 学了一上午+一晚上的分块. 下午月赛切掉两道题之后xzh发现E题是道树剖,果断开始切E. 结果: 做了快两个小时还是0分. 11月 14日 上午把黄题冲上了100,绿题冲上了5 ...
- [atARC062F]Painting Graphs with AtCoDeer
求出点双后缩点,对于点双之间,显然不存在简单环,即每一个简单环一定在一个点双内部,换言之即每一个点双可以独立的考虑,然后将结果相乘 (对于点双之间的边任意染色,即若有$s$条边,还会有$k^{s}$的 ...
- RestSharp使用说明
翻译自:https://github.com/restsharp/RestSharp/wiki,转载请注明. 一.新手入门 如果只有少量一次性请求需要封装为API,则可以如下使用RestSharp : ...
- layui页面操作,点击一个添加页面,跳转有确定,然后点击确定后将选择的几个数据返回前一个页面获取值,然后ajax请求后台
custUserIndex.html [添加页面代码] <!DOCTYPE html> <html> <head> <meta charset="u ...