一:环境及要求

环境:

  • 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. Qt5 C++ GUI界面 开发环境配置 详细教程

    本博客已暂停更新,需要请转新博客http://www.whbwiki.com/333.html Qt 下载 Qt 体积很大,有 1GB~3GB,官方下载通道非常慢,相信很多读者会崩溃,所以建议大家使用 ...

  2. JavaScript事件捕获冒泡与捕获

    事件流 JavaScript中,事件流指的是DOM事件流. 概念 事件的传播过程即DOM事件流.事件对象在 DOM 中的传播过程,被称为"事件流".举个例子:开电脑这个事,首先你是 ...

  3. 登录、注销&用户和用户组管理

    登录.注销 # 立刻关机 shutdown -h now # 1分钟后,关机 shutdown -h 1 # 立刻重启 shutdown -r now # 2分钟后,重启 shutdown -r 2 ...

  4. springcloud zuul shiro网关鉴权并向服务传递用户信息

    1.pom文件 <dependencies> <!--eureka客户端--> <dependency> <groupId>org.springfram ...

  5. 从零开始制作一个linux iso镜像

    一.前言     对于一个极简化的linux系统而言,只需要三个部分就能组成,它们分别是一个linux内核.一个根文件系统和引导.以下是本文制作linux iso镜像所用到的系统和软件:     OS ...

  6. Python 爬取 豆瓣

    ... import urllib.request import time from bs4 import BeautifulSoup def url_open(url): response = ur ...

  7. C++内存管理剖析

    C++内存管理 C++中有四种内存分配.释放方式: 最高级的是std::allocator,对应的释放方式是std::deallocate,可以自由设计来搭配任何容器:new/delete系列是C++ ...

  8. [ccBB]Billboards

    参考loj2265中关于杨表的相关知识 先来考虑$m\mid n$的情况: 记$t=\frac{n}{m}$,将序列划分为$[1,m],[m+1,2m],...,[(t-1)m+1,tm]$这$t$段 ...

  9. @Inject注解

    在看eureka的源码看到了这个注解,百度一下说这个和autowored差不多, import javax.inject.Inject;import javax.inject.Singleton; @ ...

  10. es使用java的api操作

    基本环境的创建 pom依赖  <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...