一:环境及要求

环境:

  • 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;">&lt;!--</span><span style="color: #008000;">1.增加books</span><span style="color: #008000;">--&gt;</span>
<span style="color: #0000ff;">&lt;</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;">&gt;</span><span style="color: #000000;">
insert into books (bookId,bookName,bookNumber,bookPrice)
values (#{bookId},#{bookName},#{bookNumber},#{bookPrice})
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">insert</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">2.通过id删除books</span><span style="color: #008000;">--&gt;</span>
<span style="color: #0000ff;">&lt;</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;">&gt;</span><span style="color: #000000;">
delete from books where bookId=#{bookId}
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">delete</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">3.更新books</span><span style="color: #008000;">--&gt;</span>
<span style="color: #0000ff;">&lt;</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;">&gt;</span><span style="color: #000000;">
update books set bookName=#{bookName},bookNumber=#{bookNumber},bookPrice=#{bookPrice}
where bookId=#{bookId}
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">update</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">4.通过id获取books</span><span style="color: #008000;">--&gt;</span>
<span style="color: #0000ff;">&lt;</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;">&gt;</span><span style="color: #000000;">
select * from books where bookId=#{bookId}
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">select</span><span style="color: #0000ff;">&gt;</span> <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">5.获取全部books</span><span style="color: #008000;">--&gt;</span>
<span style="color: #0000ff;">&lt;</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;">&gt;</span><span style="color: #000000;">
select * from books
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">select</span><span style="color: #0000ff;">&gt;</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 整合案例的更多相关文章

  1. Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

    Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...

  2. Java基础-SSM之Spring和Mybatis整合案例

    Java基础-SSM之Spring和Mybatis整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   在之前我分享过mybatis和Spring的配置案例,想必大家对它们的 ...

  3. 08 SSM整合案例(企业权限管理系统):07.订单操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 07.订单操作 SSM订单操作 ...

  4. 08 SSM整合案例(企业权限管理系统):05.SSM整合案例的基本介绍

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户和角色操作 10.权限关联 11.AOP日志 05.SSM整合案例的基本介绍 ...

  5. 08 SSM整合案例(企业权限管理系统):06.产品操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 06.产品操作 SSM 环境搭 ...

  6. 08 SSM整合案例(企业权限管理系统):09.用户和角色操作

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户和角色操作 10.权限关联 11.AOP日志 09.用户和角色操作 1. 用 ...

  7. 08 SSM整合案例(企业权限管理系统):08.权限控制

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户操作 10.权限关联与控制 11.AOP日志 08.权限控制 SSM权限操作 ...

  8. 08 SSM整合案例(企业权限管理系统):10.权限关联与控制

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户操作 10.权限关联与控制 11.AOP日志 10.权限关联与控制 1.用户 ...

  9. 08 SSM整合案例(企业权限管理系统):11.AOP日志

    04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.权限控制 09.用户和角色操作 10.权限关联 11.AOP日志 11.AOP日志 1.数据库与 ...

  10. SSM整合案例:图书管理系统

    目录 SSM整合案例:图书管理系统 1.搭建数据库环境 2.基本环境搭建 2.1.新建一个Maven项目,起名为:ssmbuild,添加web的支持 2.2.导入pom的相关依赖 2.3.Maven静 ...

随机推荐

  1. vue中main.js配置后端请求地址

    Vue.config.productionTip = false; axios.defaults.baseURL = 'http://127.0.0.1:8003/';//后端开发环境地址 // ax ...

  2. IDEA Dao层快速跳转Mapper.xml 文件的插件

    1.Idea 窗口→File→Setting→Plugins, 2.搜索 Free MyBatis plugin, install,等待安装完成后,Restart IDEA .

  3. Go语言核心36讲(Go语言实战与应用四)--学习笔记

    26 | sync.Mutex与sync.RWMutex 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包.这会涉及这些代码包的标准用法.使用禁忌.背后原理以及周边的知识. ...

  4. Python基础(递归函数)

    def age(n): if n == 1: return 18 else: return age(n - 1) + 2 ret=age(100) print(ret)#216 def test(nu ...

  5. Java 关键字之 final

    欢迎学习 Java 基础文章系列之 final 关键字 final 代表什么意思? final 通常是指无法被改变或者不能被改变的,什么情况下不想被改变呢? 不想改变可能有两种原因:设计或者效率. 在 ...

  6. vue3 学习笔记 (二)——axios 的使用有变化吗?

    本篇文章主要目的就是想告诉我身边,正在学 vue3 或者 准备学 vue3 的同学,vue3中网络请求axios该如何使用,防止接触了一点点 vue3 的同学会有个疑问?生命周期.router .vu ...

  7. SpringBoot项目配置文件中密码的加密

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/15565862.html 版权声明:本文为博主原创文章,转载请附上博文链接! 公众号:追梦1819 ...

  8. Water 2.4 发布,一站式服务治理平台

    Water(水孕育万物...) Water 为项目开发.服务治理,提供一站式解决方案(可以理解为微服务架构支持套件).基于 Solon 框架开发,并支持完整的 Solon Cloud 规范:已在生产环 ...

  9. RepeatModeler安装及使用

    如果进行重复序列的预测,则使用RepeatModeler,可自身比对进行查找 安装 (1)下载地址:http://www.repeatmasker.org/RepeatModeler/ (2)Repe ...

  10. 【R绘图】当图例映射color/shape等多个属性时,如何修改图例标题?

    一般而言,我们修改ggplot2图例标题,常用以下三种方法: + guides(fill=guide_legend(title="New Legend Title")) + lab ...