小工具知识网

当前位置: 首页 > 行业知识 > SpringMVC07、整合SSM

行业知识

SpringMVC07、整合SSM

2026-11-14 09:08:17 来源:互联网转载

7、整合SSM

7.1、环境要求

���境:

  • IDEA
  • MySQL 5.7.19
  • Tomcat 9
  • Maven 3.6

    要求:

  • 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识;

    7.2、数据库环境

    创建一个存放书籍数据的数据库表

    CREATE DATABASE `ssmbuild`;USE `ssmbuild`;DROP TABLE IF EXISTS `books`;CREATE TABLE `books` (  `bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书id',  `bookName` VARCHAR(100) NOT NULL COMMENT '书名',  `bookCounts` INT(11) NOT NULL COMMENT '数量',  `detail` VARCHAR(200) NOT NULL COMMENT '描述',  KEY `bookID` (`bookID`)) ENGINE=INNODB DEFAULT CHARSET=utf8INSERT  INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES (1,'Java',1,'从入门到放弃'),(2,'MySQL',10,'从删库到跑路'),(3,'Linux',5,'从进门到进牢');

    7.3、基本环境搭建

    1. 新建一Maven项目! ssmbuild , 添加web的支持

    2. 导入相关的pom依赖!

                    junit        junit        4.12                    mysql        mysql-connector-java        5.1.47                    com.mchange        c3p0        0.9.5.2                    javax.servlet        servlet-api        2.5                javax.servlet.jsp        jsp-api        2.2                javax.servlet        jstl        1.2                    org.mybatis        mybatis        3.5.2                org.mybatis        mybatis-spring        2.0.2                    org.springframework        spring-webmvc        5.1.9.RELEASE                org.springframework        spring-jdbc        5.1.9.RELEASE    

    Maven资源过滤设置

                            src/main/java                            **/*.properties                **/*.xml                        false                            src/main/resources                            **/*.properties                **/*.xml                        false            

    建立基本结构和配置框架!

    • com.kuang.pojo

    • com.kuang.dao

    • com.kuang.service

    • com.kuang.controller

    • mybatis-config.xml

       

      applicationContext.xml

       

      7.4、Mybatis层编写

      1. 数据库配置文件 database.properties

      jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=123456
      1. IDEA关联数据库

      2. 编写MyBatis的核心配置文件

                                      

      编写数据库对应的实体类 com.kuang.pojo.Books

      使用lombok插件!

      package com.kuang.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic class Books {    private int bookID;    private String bookName;    private int bookCounts;    private String detail;}

      编写Dao层的 Mapper接口!

      package com.kuang.dao;import com.kuang.pojo.Books;import java.util.List;public interface BookMapper {    //增加一个Book    int addBook(Books book);    //根据id删除一个Book    int deleteBookById(int id);    //更新Book    int updateBook(Books books);    //根据id查询,返回一个Book    Books queryBookById(int id);    //查询全部Book,返回list集合    List queryAllBook();}

      编写接口对应的 Mapper.xml 文件。需要导入MyBatis的包;

                      insert into ssmbuild.books(bookName,bookCounts,detail)        values (#{bookName}, #{bookCounts}, #{detail})                    delete from ssmbuild.books where bookID=#{bookID}                    update ssmbuild.books        set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail}        where bookID = #{bookID}                    select * from ssmbuild.books        where bookID = #{bookID}                    SELECT * from ssmbuild.books    

      编写Service层的接口和实现类

      接口:

      package com.kuang.service;import com.kuang.pojo.Books;import java.util.List;//BookService:底下需要去实现,调用dao层public interface BookService {    //增加一个Book    int addBook(Books book);    //根据id删除一个Book    int deleteBookById(int id);    //更新Book    int updateBook(Books books);    //根据id查询,返回一个Book    Books queryBookById(int id);    //查询全部Book,返回list集合    List queryAllBook();}

      实现类:

      package com.kuang.service;import com.kuang.dao.BookMapper;import com.kuang.pojo.Books;import java.util.List;public class BookServiceImpl implements BookService {    //调用dao层的操作,设置一个set接口,方便Spring管理    private BookMapper bookMapper;    public void setBookMapper(BookMapper bookMapper) {        this.bookMapper = bookMapper;    }    public int addBook(Books book) {        return bookMapper.addBook(book);    }    public int deleteBookById(int id) {        return bookMapper.deleteBookById(id);    }    public int updateBook(Books books) {        return bookMapper.updateBook(books);    }    public Books queryBookById(int id) {        return bookMapper.queryBookById(id);    }    public List queryAllBook() {        return bookMapper.queryAllBook();    }}

      OK,到此,底层需求操作编写完毕!

      7.5、Spring层

      1. 配置Spring整合MyBatis,我们这里数据源使用c3p0连接池;

      2. 我们去编写Spring整合Mybatis的相关的配置文件; spring-dao.xml

                                                                                                                                                                                                                                              

      Spring整合service层

                                                              

      Spring层搞定!再次理解一下,Spring就是一个大杂烩,一个容器!对吧!

      7.6、SpringMVC层

      1. web.xml

                      DispatcherServlet        org.springframework.web.servlet.DispatcherServlet                    contextConfigLocation                           classpath:applicationContext.xml                1                DispatcherServlet        /                    encodingFilter                    org.springframework.web.filter.CharacterEncodingFilter                            encoding            utf-8                        encodingFilter        /*                    15    

      spring-mvc.xml

                                                                      

      Spring配置整合文件,applicationContext.xml

                  

      配置文件,暂时结束!Controller 和 视图层编写

      1. BookController 类编写 , 方法一:查询全部书籍

      @Controller@RequestMapping("/book")public class BookController {    @Autowired    @Qualifier("BookServiceImpl")    private BookService bookService;    @RequestMapping("/allBook")    public String list(Model model) {        List list = bookService.queryAllBook();        model.addAttribute("list", list);        return "allBook";    }}

      编写首页 index.jsp

          首页            a {            text-decoration: none;            color: black;            font-size: 18px;        }        h3 {            width: 180px;            height: 38px;            margin: 100px auto;            text-align: center;            line-height: 38px;            background: deepskyblue;            border-radius: 4px;        }    

      点击进入列表页

      书籍列表页面 allbook.jsp

          书籍列表                                                    

      书籍列表 —— 显示所有书籍

      新增
      书籍编号 书籍名字 书籍数量 书籍详情 操作
      ${book.getBookID()} ${book.getBookName()} ${book.getBookCounts()} ${book.getDetail()} 更改 | 删除

      BookController 类编写 , 方法二:添加书籍

      @RequestMapping("/toAddBook")public String toAddPaper() {    return "addBook";}@RequestMapping("/addBook")public String addPaper(Books books) {    System.out.println(books);    bookService.addBook(books);    return "redirect:/book/allBook";}

      添加书籍页面:addBook.jsp

          新增书籍                                                    

      新增书籍

      书籍名称:


      书籍数量:


      书籍详情:


      BookController 类编写 , 方法三:修改书籍

      @RequestMapping("/toUpdateBook")public String toUpdateBook(Model model, int id) {    Books books = bookService.queryBookById(id);    System.out.println(books);    model.addAttribute("book",books );    return "updateBook";}@RequestMapping("/updateBook")public String updateBook(Model model, Books book) {    System.out.println(book);    bookService.updateBook(book);    Books books = bookService.queryBookById(book.getBookID());    model.addAttribute("books", books);    return "redirect:/book/allBook";}

      修改书籍页面 updateBook.jsp

          修改信息                                                    

      修改信息

      书籍名称: 书籍数量: 书籍详情:

      BookController 类编写 , 方法四:删除书籍

      @RequestMapping("/del/{bookId}")public String deleteBook(@PathVariable("bookId") int id) {    bookService.deleteBookById(id);    return "redirect:/book/allBook";}

      配置Tomcat,进行运行!

      到目前为止,这个SSM项目整合已经完全的OK了,可以直接运行进行测试!这个练习十分的重要,大家需要保证,不看任何东西,自己也可以完整的实现出来!

      项目结构图

      7.7、小结及展望

      这个是同学们的第一个SSM整合案例,一定要烂熟于心!

      SSM框架的重要程度是不言而喻的,学到这里,大家已经可以进行基本网站的单独开发。但是这只是增删改查的基本操作。可以说学到这里,大家才算是真正的步入了后台开发的门。也就是能找一个后台相关工作的底线。

      或许很多人,工作就做这些事情,但是对于个人的提高来说,还远远不够!

      我们后面还要学习一些 SpringMVC 的知识!

      • Ajax 和 Json
      • 文件上传和下载
      • 拦截器

        SpringBoot、SpringCloud开发!

        7.8、实现查询书籍功能

        1. 前端页面增加一个输入框和查询按钮

                                

        编写查询的Controller

        @RequestMapping("/queryBook")public String queryBook(String queryBookName,Model model){    System.out.println("要查询的书籍:"+queryBookName);    //业务逻辑还没有写    return "allBook";}
        1. 由于底层没有实现,所以我们要将底层代码先搞定

        2. Mapper接口

        //根据id查询,返回一个Book

        Books queryBookByName(String bookName);

        Mapper.xml

            select * from ssmbuild.books    where bookName = #{bookName}

        Service接口

        //根据id查询,返回一个BookBooks queryBookByName(String bookName);

        完善Controller

        @RequestMapping("/queryBook")public String queryBook(String queryBookName,Model model){    System.out.println("要查询的书籍:"+queryBookName);    Books books = bookService.queryBookByName(queryBookName);    List list = new ArrayList();    list.add(books);    model.addAttribute("list", list);    return "allBook";}
        1. 测试,查询功能OK!

        2. 无聊优化!我们发现查询的东西不存在的时候,查出来的页面是空的,我们可以提高一下用户的体验性!

          1. 在前端添加一个展示全部书籍的按钮
        2. 并在后台增加一些判断性的代码!   ```java   @RequestMapping("/queryBook")   public String queryBook(String queryBookName,Model model){       System.out.println("要查询的书籍:"+queryBookName);       //如果查询的数据存在空格,则优化       Books books = bookService.queryBookByName(queryBookName.trim());        List list = new ArrayList();       list.add(books);       //如果没有查出来书籍,则返回全部书籍列表       if (books==null){           list = bookService.queryAllBook();           model.addAttribute("error", "没有找到本书!");       }       model.addAttribute("list", list);       return "allBook";   }   ```3. 将错误信息展示在前台页面!完整的查询栏代码   ```jsp                     新增           显示全部书籍                                        ${error}                                                   

上一篇:3分钟带你了解Vue3的nextTick()

下一篇:91短视频下载方法与技巧