一:环境及要求

环境:

  • IDEA最新版
  • MySQL 5.7.19 
  • Tomcat 9 
  • Maven 3.6    

要求:

  • 需要掌握 MyBatis;Spring;SpringMVC;MySQL数据库以及简单的前端知识 

二:项目编码

1:搭建数据库

1-1:创建一个数据库

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

1-2:创建数据库需要的database.properties

  1. jdbc.Driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm-books?useSSL=true&useUnicode=true&characterEncoding=utf-8
  3. jdbc.username=root
  4. jdbc.password=123456

1-3:导入数据库驱动包

  1. 1 <dependency>
  2. 2 <groupId>mysql</groupId>
  3. 3 <artifactId>mysql-connector-java</artifactId>
  4. 4 <version>5.1.47</version>
  5. 5 </dependency>

1-4:IDEA关联数据库

2:编写数据库对应的实体类及Dao层

2-1:实体类  com.qsh.pojo.Books

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

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

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

2-3:编写接口对应的Mapper文件时需要导入MyBatis的包

  1. 1 <dependency>
  2. 2 <groupId>org.mybatis</groupId>
  3. 3 <artifactId>mybatis</artifactId>
  4. 4 <version>3.5.1</version>
  5. 5 </dependency>

2-4:编写BookMapper.xml文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper namespace="com.qsh.dao.BookDao">
  7. <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">1.增加books</span><span style="color: #008000;">--&gt;</span>
  8. <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;">
  9.     insert into books (bookId,bookName,bookNumber,bookPrice)
  10.     values (#{bookId},#{bookName},#{bookNumber},#{bookPrice})
  11. </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">insert</span><span style="color: #0000ff;">&gt;</span>
  12. <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">2.通过id删除books</span><span style="color: #008000;">--&gt;</span>
  13. <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;">
  14.     delete from books where bookId=#{bookId}
  15. </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">delete</span><span style="color: #0000ff;">&gt;</span>
  16. <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">3.更新books</span><span style="color: #008000;">--&gt;</span>
  17. <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;">
  18.     update books set bookName=#{bookName},bookNumber=#{bookNumber},bookPrice=#{bookPrice}
  19.     where bookId=#{bookId}
  20. </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">update</span><span style="color: #0000ff;">&gt;</span>
  21. <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">4.通过id获取books</span><span style="color: #008000;">--&gt;</span>
  22. <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;">
  23.     select * from books where bookId=#{bookId}
  24. </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">select</span><span style="color: #0000ff;">&gt;</span>
  25. <span style="color: #008000;">&lt;!--</span><span style="color: #008000;">5.获取全部books</span><span style="color: #008000;">--&gt;</span>
  26. <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;">
  27.     select * from books
  28. </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">select</span><span style="color: #0000ff;">&gt;</span>
  29.  
  30. </mapper>

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

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6.  
  7. <!--别名-->

  8. <typeAliases>

  9. <package name="com.qsh.pojo"/>

  10. </typeAliases>
  11.  
  12. <!--关联映射文件-->

  13. <mappers>

  14. <mapper resource="com/qsh/dao/BookMapper.xml"/>

  15. </mappers>
  16.  
  17. </configuration>

3:编写Service层的接口和实现类

3-1:接口  com.qsh.service.BookService

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

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

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

4:Spring整合MyBatis

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

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

4-2:配置spring-dao.xml

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

5:Spring整合service层

5-1:配置spring-service.xml

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

6:SpringMVC相关配置

6-1:配置web.xml

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

6-2:配置spring-mvc.xml

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

7:Spring配置整合文件,applicationContext.xml

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

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

8:编写BookController类

8-1:导入jsp和servlet的包

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

8-2:com.qsh.controller.BookController

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

9:前端视图层

9-1:index.jsp

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

9-2:allbook.jsp

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

9-3:addBook.jsp

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

9-4:upBook.jsp

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

10:Maven文件汇总

记得Maven资源导入问题

  1. 1 <?xml version="1.0" encoding="UTF-8"?>
  2. 2
  3. 3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. 5 <modelVersion>4.0.0</modelVersion>
  6. 6
  7. 7 <groupId>com.qsh</groupId>
  8. 8 <artifactId>ssm-book-demo</artifactId>
  9. 9 <version>1.0-SNAPSHOT</version>
  10. 10 <packaging>war</packaging>
  11. 11
  12. 12 <name>ssm-book-demo Maven Webapp</name>
  13. 13 <!-- FIXME change it to the project's website -->
  14. 14 <url>http://www.example.com</url>
  15. 15
  16. 16 <properties>
  17. 17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. 18 <maven.compiler.source>1.7</maven.compiler.source>
  19. 19 <maven.compiler.target>1.7</maven.compiler.target>
  20. 20 </properties>
  21. 21
  22. 22 <dependencies>
  23. 23 <dependency>
  24. 24 <groupId>junit</groupId>
  25. 25 <artifactId>junit</artifactId>
  26. 26 <version>4.11</version>
  27. 27 <scope>test</scope>
  28. 28 </dependency>
  29. 29
  30. 30 <!-- 1-1.mybatis的包-->
  31. 31 <dependency>
  32. 32 <groupId>org.mybatis</groupId>
  33. 33 <artifactId>mybatis</artifactId>
  34. 34 <version>3.5.1</version>
  35. 35 </dependency>
  36. 36
  37. 37 <!-- 1-2.连接数据库的驱动包-->
  38. 38 <dependency>
  39. 39 <groupId>mysql</groupId>
  40. 40 <artifactId>mysql-connector-java</artifactId>
  41. 41 <version>5.1.47</version>
  42. 42 </dependency>
  43. 43
  44. 44 <!-- 2-1.mybatis-spring整合包-->
  45. 45 <dependency>
  46. 46 <groupId>org.mybatis</groupId>
  47. 47 <artifactId>mybatis-spring</artifactId>
  48. 48 <version>1.3.1</version>
  49. 49 </dependency>
  50. 50
  51. 51 <!-- 2-2.spring mvc和 spring 系列包-->
  52. 52 <dependency>
  53. 53 <groupId>org.springframework</groupId>
  54. 54 <artifactId>spring-webmvc</artifactId>
  55. 55 <version>4.3.24.RELEASE</version>
  56. 56 </dependency>
  57. 57 <dependency>
  58. 58 <groupId>org.springframework</groupId>
  59. 59 <artifactId>spring-jdbc</artifactId>
  60. 60 <version>4.3.24.RELEASE</version>
  61. 61 </dependency>
  62. 62
  63. 63 <!-- 2-3.第三方数据源:c3p0-->
  64. 64 <dependency>
  65. 65 <groupId>com.mchange</groupId>
  66. 66 <artifactId>c3p0</artifactId>
  67. 67 <version>0.9.5.2</version>
  68. 68 </dependency>
  69. 69
  70. 70 <!-- 3-1.servlet-->
  71. 71 <dependency>
  72. 72 <groupId>javax.servlet</groupId>
  73. 73 <artifactId>javax.servlet-api</artifactId>
  74. 74 <version>3.0.1</version>
  75. 75 </dependency>
  76. 76
  77. 77 <!-- 3-2.jsp-->
  78. 78 <dependency>
  79. 79 <groupId>javax.servlet.jsp</groupId>
  80. 80 <artifactId>jsp-api</artifactId>
  81. 81 <version>2.2</version>
  82. 82 </dependency>
  83. 83
  84. 84 <!-- 3-3.JSTL-->
  85. 85 <dependency>
  86. 86 <groupId>javax.servlet</groupId>
  87. 87 <artifactId>jstl</artifactId>
  88. 88 <version>1.2</version>
  89. 89 </dependency>
  90. 90
  91. 91 </dependencies>
  92. 92
  93. 93 <build>
  94. 94
  95. 95 <!--希望maven在导出项目的时候,能够将我们的配置及资源导出-->
  96. 96 <resources>
  97. 97 <resource>
  98. 98 <directory>src/main/java</directory>
  99. 99 <includes>
  100. 100 <include>**/*.properties</include>
  101. 101 <include>**/*.xml</include>
  102. 102 </includes>
  103. 103 <filtering>false</filtering>
  104. 104 </resource>
  105. 105 <resource>
  106. 106 <directory>src/main/resources</directory>
  107. 107 <includes>
  108. 108 <include>**/*.properties</include>
  109. 109 <include>**/*.xml</include>
  110. 110 </includes>
  111. 111 <filtering>false</filtering>
  112. 112 </resource>
  113. 113 </resources>
  114. 114
  115. 115 <finalName>ssm-book-demo</finalName>
  116. 116 <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  117. 117 <plugins>
  118. 118 <plugin>
  119. 119 <artifactId>maven-clean-plugin</artifactId>
  120. 120 <version>3.1.0</version>
  121. 121 </plugin>
  122. 122 <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  123. 123 <plugin>
  124. 124 <artifactId>maven-resources-plugin</artifactId>
  125. 125 <version>3.0.2</version>
  126. 126 </plugin>
  127. 127 <plugin>
  128. 128 <artifactId>maven-compiler-plugin</artifactId>
  129. 129 <version>3.8.0</version>
  130. 130 </plugin>
  131. 131 <plugin>
  132. 132 <artifactId>maven-surefire-plugin</artifactId>
  133. 133 <version>2.22.1</version>
  134. 134 </plugin>
  135. 135 <plugin>
  136. 136 <artifactId>maven-war-plugin</artifactId>
  137. 137 <version>3.2.2</version>
  138. 138 </plugin>
  139. 139 <plugin>
  140. 140 <artifactId>maven-install-plugin</artifactId>
  141. 141 <version>2.5.2</version>
  142. 142 </plugin>
  143. 143 <plugin>
  144. 144 <artifactId>maven-deploy-plugin</artifactId>
  145. 145 <version>2.8.2</version>
  146. 146 </plugin>
  147. 147 </plugins>
  148. 148 </pluginManagement>
  149. 149 </build>
  150. 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. Jenkins 邮件发送

    1.jenkins新建任务 2.配置svn 3.maven项目构建配置pom.xml 使用maven命令 clean test 构建前清除: 4.系统管理 => 插件管理 =>可选安装邮件 ...

  2. Java测试开发--MySql之C3P0连接池(八)

    连接池C3P0! 连接池技术的目的:解决建立数据库连接耗费资源和时间很多的问题,提高性能 ! 下面以案例演示下C3P0的操作流程. 1.测试准备: ①MySql数据库一枚②database名为myte ...

  3. PTA 7-1 邻接矩阵表示法创建无向图 (20分)

    PTA 7-1 邻接矩阵表示法创建无向图 (20分) 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度. 输入格式: 输入第一行中给出2个整数i(0<i≤10),j(j≥0),分别为图G的顶 ...

  4. Java 关键字之 final

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

  5. XMLHttpRequest—>Promise

    XMLHttpRequest.open() 初始化 HTTP 请求参数 语法open(method, url, async, username, password) method 参数是用于请求的 H ...

  6. 基于linux与线程池实现文件管理

    项目要求 1.基本 用线程池实现一个大文件夹的拷贝,大文件夹嵌套很多小文件:实现复制到指定文件夹的全部文件夹. 2.扩充功能 显示进度条:拷贝耗时统计:类似linux的tree,不能直接用system ...

  7. NOIP2021游记(退役记)

    11月 13日 停课了 学了一上午+一晚上的分块. 下午月赛切掉两道题之后xzh发现E题是道树剖,果断开始切E. 结果: 做了快两个小时还是0分. 11月 14日 上午把黄题冲上了100,绿题冲上了5 ...

  8. [atARC062F]Painting Graphs with AtCoDeer

    求出点双后缩点,对于点双之间,显然不存在简单环,即每一个简单环一定在一个点双内部,换言之即每一个点双可以独立的考虑,然后将结果相乘 (对于点双之间的边任意染色,即若有$s$条边,还会有$k^{s}$的 ...

  9. RestSharp使用说明

    翻译自:https://github.com/restsharp/RestSharp/wiki,转载请注明. 一.新手入门 如果只有少量一次性请求需要封装为API,则可以如下使用RestSharp : ...

  10. layui页面操作,点击一个添加页面,跳转有确定,然后点击确定后将选择的几个数据返回前一个页面获取值,然后ajax请求后台

    custUserIndex.html [添加页面代码] <!DOCTYPE html> <html> <head> <meta charset="u ...