栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Day05SSM整合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day05SSM整合

1.环境要求

环境:

  • IDEA
  • MySQL5.5
  • Tomcat8
  • Maven3.6
2.数据库环境
CREATE DATAbase `ssmbuild`;

USE `ssmbuild`;

CREATE TABLE `books`(
`bookID` INT NOT NULL AUTO_INCREMENT COMMENT '书id',
`bookName` VARCHAr(100) NOT NULL COMMENT '书名',
`bookCounts` INT NOT NULL COMMENT '数量',
`detail` VARCHAr(200) NOT NULL COMMENT '描述',
KEY `bookID`(`bookID`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `books`(`bookID`,`bookName`,`bookCounts`,`detail`)VALUES
(1,'Java',1,'从入门到放弃'),
(2,'MySQL',10,'从删库到跑路'),
(3,'Linux',5,'从进门到进牢');
3.基本环境搭建
  1. 新建一个maven项目ssmbuild

  2. 导入相关pom依赖

    
    
        
        
            junit
            junit
            4.12
            test
        
         
        
            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
        
    
  1. maven资源过滤设置
    
    
        
            
                src/main/java
                
                    ***.xml
                
                false
            
            
                src/main/resources
                
                    ***.xml
                
                false
            
        
    
  • idea链接MySQL数据库,需要设置serverTimezone为CST
  1. 建立基本结构框架和配置框架
  • com.liu.pojo
  • com.liu.dao
  • com.liu.service
  • com.liu.controller
  • mybatis-config.xml





  • applicationContext.xml


       

4.Mybatis层编写
  1. 在resources目录下编写数据库配置文件database.properties
jdbc.driver=com.mysql.jdbc.Driver
# 如果使用的是MySQL8.0+的配置,需要增加一个时区的配置(在url后添加&serverTimezone=Asia/Shanghai)
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
  1. 编写mybatis-config.xml文件并且关联数据库




    
    
    
        
    


  1. 编写实体类,在pojo包中编写Books类
package com.liu.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;



@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {

    private int bookID;
    private String bookName;
    private int bookCounts;
    private String detail;
}
  • 此处导入了lombok插件的依赖,在加上有参和无参构造的注解
        
            org.projectlombok
            lombok
            1.16.10
        
  1. 在dao包中编写接口BookMapper
package com.liu.dao;

import com.liu.pojo.Books;
import org.apache.ibatis.annotations.Param;

import java.util.List;


public interface BookMapper {

    //增加一本书
    int addBook(Books books);

    //删除一本书
    int deleteBookById(@Param("bookId") int id);

    //更新一本书
    int updateBook(Books books);

    //查询一本书
    Books queryBookById(@Param("bookId") int id);

    //查询全部的书
    List queryAllBook();
}


  1. 在dao包中编写BookMapper.xml文件



    
    
        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;
    

    

  1. 将BookMapper.xml绑定到配置文件mybatis-config.xml中
    
        
        
        
    
  1. 在service包下编写接口BookService
package com.liu.service;

import com.liu.pojo.Books;

import java.util.List;


public interface BookService {

    //增加一本书
    int addBook(Books books);

    //删除一本书
    int deleteBookById(int id);

    //更新一本书
    int updateBook(Books books);

    //查询一本书
    Books queryBookById(int id);

    //查询全部的书
    List queryAllBook();
}
  1. 在service包下编写接口BookService的实现类BookServiceImpl
package com.liu.service;

import com.liu.dao.BookMapper;
import com.liu.pojo.Books;

import java.util.List;


public class BookServiceImpl implements BookService{

    //service层调用dao层:组合dao(即把dao层放进来私有化)
    private BookMapper bookMapper;
    public void setBookMapper(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

    public int addBook(Books books) {
        return bookMapper.addBook(books);
    }

    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();
    }
}
5.Spring层编写 5.1编写spring-dao.xml
  • 在resources目录下编写spring-dao.xml文件,整合dao层

  • 此处写入头文件后点击右上角出现的蓝色文字,选择添加到ApplicationContext中

  • 查看项目结构可看到添加成功,尽量保证所有配置文件都在一个ApplicationContext中

  • spring-dao.xml




    
    


    
    
        
        
        
        

        
        
        
        
        
        
        
        
        
        
        

    


    
    
        
        
        
        
    


    
    
        
        
        
        
        
    



5.2编写spring-service.xml
  • 在resources目录下编写spring-service.xml文件,整合service层

  • 此处写入头文件后点击右上角出现的蓝色文字,选择添加到ApplicationContext中。查看项目结构可看到添加成功,尽量保证所有配置文件都在一个ApplicationContext中

  • 先通过applicationContext.xml文件将spring-dao.xml和spring-service.xml文件整合起来




    
    


  • spring-service.xml




    
    

    
    
        
    

    
    
        
        
    

    

6.SpringMVC层编写
  • 在项目中添加web支持

  • 在resources目录下创建spring-mvc.xml文件,此处写入头文件后点击右上角出现的蓝色文字,选择添加到ApplicationContext中。查看项目结构可看到添加成功,尽量保证所有配置文件都在一个ApplicationContext中

  • 在web/WEB-INF下的web.xml文件中编辑以下内容




    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        1
    
    
        springmvc
        /
    

    
    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
    
    
        encodingFilter
        
    private BookService bookService = new BookServiceImpl();

    //查询全部书籍,并返回到一个书籍展示页面
    @RequestMapping("/allBook")
    public String list(Model model){
        List list = bookService.queryAllBook();

        model.addAttribute("list",list);
        return "allBook";
    }
}

运行发现点击”进入书籍页面“后依旧报错500,发现空指针异常

但是刚刚测试类中查出了books,代码一定没有空指针

  1. 发现是SpringMVC整合的时候没调用到service层的bean,可能的问题有:

    1. applicationContext.xml中没有注入bean

      检查发现applicationContext.xml中已经整合了三个xml文件

    2. 在web.xml中,我也绑定过配置文件

      检查发现web.xml中绑定classpath出错,我配置的Spring-mvc.xml中确实没有service bean,所以报空指针

      应该绑定applicationContext.xml文件,改正后如下:

    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:applicationContext.xml
        
        1
    
    
        springmvc
        /
    

启动Tomcat运行成功

点击后:

运行正常!

8.编写查询全部书籍方法的前端页面
  • 美化allBook.jsp页面
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    书籍展示

    
    



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


    
        
            

                <%--书籍从数据库中查询出来,从这个list中遍历出来:使用foreach--%>
                
                        
书籍编号 书籍名称 书籍数量 书籍详情
${book.bookID} ${book.bookName} ${book.bookCounts} ${book.detail}
9.编写添加书籍功能
  • 在BookController类中添加跳转到添加书籍页面的方法

    //跳转到增加书籍页面
        @RequestMapping("/toAddBook")
        public String toAddPaper(){
            return "addBook";
        }
    
  • 在allBook.jsp页面中添加部分代码

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    书籍展示

    
    



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

        
            
                <%--toAddBook--%>
                新增书籍
            
        

    

    
        
            

                <%--书籍从数据库中查询出来,从这个list中遍历出来:使用foreach--%>
                
                        
书籍编号 书籍名称 书籍数量 书籍详情
${book.bookID} ${book.bookName} ${book.bookCounts} ${book.detail}
  • 在jsp文件夹中新建并编写addBook.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    新增书籍

    
    





    
        
            
                
                    新增书籍
                
            
        
    


    
<%--name中的名字必须和实体类一样,否则为null--%> <%--添加required标签使当前行必须填写完才能提交--%>
  • 在BookController类中添加上添加书籍的请求方法
    //添加书籍的请求
    @RequestMapping("/addBook")
    public String addBook(Books books){
        System.out.println("addBook=>"+books);
        bookService.addBook(books);
        //重定向到我们的@RequestMapping("/allBook")请求
        return "redirect:/book/allBook";
    }
  • 运行tomcat

  • 点击按钮,进入书籍展示页面

  • 点击新增书籍按钮

  • 添加书籍信息后点击添加按钮

  • 发现跳转回了书籍展示页面,书籍成功添加
10.编写修改和删除功能 10.1修改功能
  • 在allBook.jsp页面中添加代码
                <%--书籍从数据库中查询出来,从这个list中遍历出来:使用foreach--%>
                
                    
                        
                            ${book.bookID}
                            ${book.bookName}
                            ${book.bookCounts}
                            ${book.detail}
                            <%--添加修改和删除按钮--%>
                            
                                修改
                                 | 
                                删除
                            
                        
                    
                
  • 在jsp文件夹中新建updateBook.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    修改书籍
    
    





    
        
            
                
                    修改书籍
                
            
        
    


    
<%--name中的名字必须和实体类一样,否则为null--%> <%--添加required标签使当前行必须填写完才能提交--%>
  • 更改allBook.jsp页面中的代码
                            <%--添加修改和删除按钮--%>
                            
                                修改
                                 | 
                                删除
                            
  • 在BookController类中添加上跳转到修改页面的方法
    //跳转到修改页面
    @RequestMapping("/toUpdate")
    public String toUpdatePaper(int id,Model model){
        Books books = bookService.queryBookById(id);
        model.addAttribute("QBook",books);
        return "updateBook";
    }
  • 更改updateBook.jsp页面中的代码
    
<%--name中的名字必须和实体类一样,否则为null--%> <%--添加required标签使当前行必须填写完才能提交--%> <%--添加values属性并给予默认值--%>
  • 测试当前功能

发现点击修改按钮后按照预想出现了默认值

  • 在BookController类中添加上修改书籍的方法
    //修改书籍
    @RequestMapping("/updateBook")
    public String updateBook(Books books){
        System.out.println("updateBook=>"+books);
        bookService.updateBook(books);
        return "redirect:/book/allBook";
    }
  • 运行tomcat,进入修改页面修改值后发现修改失败

  • 发现失败原因是修改方法没写需要修改对象的id,系统不知道需要修改那个对象。

  • 在BookController类中添加代码

        //修改书籍
        @RequestMapping("/updateBook")
        public String updateBook(Books books){
            System.out.println("updateBook=>"+books);
            bookService.updateBook(books);
            
            int i = bookService.updateBook(books);
            if (i>0){
                System.out.println("添加books成功"+books);
            }
            return "redirect:/book/allBook";
        }
    
  • 在updateBook.jsp中添加代码

    
<%--出现的问题:我们提交了修改的SQL请求,但是修改失败--%> <%--看一下SQL语句是否执行成功,发现SQL执行失败,修改未完成--%> <%--发现失败原因是没有给SQL语句需要查询对象的id, 导致与BookMapper.xmL文件中的更新书籍SQL语句不匹配--%> <%--解决方法:前端传递隐藏域(设置type="hidden")--%> <%--name中的名字必须和实体类一样,否则为null--%> <%--添加required标签使当前行必须填写完才能提交--%> <%--添加values属性并给予默认值--%>
  • 再次运行成功修改书籍信息

  • 在mybatis-config.xml配置文件中配置日志功能(注意setting标签要写在typeAliases标签之上)
    
    
        
    
10.2删除功能
  • 修改allBook.jsp中的代码
                            <%--添加修改和删除按钮--%>
                            
                                修改
                                 | 
                                <%--使用了restful风格--%>
                                删除
                            
  • 在BookController类中添加上删除书籍的方法
    //删除书籍
    @RequestMapping("/deleteBook/{bookId}")
    public String deleteBook(@PathVariable("bookId")int id){
        bookService.deleteBookById(id);
        return "redirect:/book/allBook";
    }
  • 运行tomcat测试删除功能

  • 点击删除

成功删除书籍

11. 编写搜索功能
  • 在BookMapper.java接口中添加代码
    //搜索书名查询书籍
    Books queryBookByName(@Param("bookName") String bookName);
  • 在BookMapper.xml文件中添加代码
    
  • 在BookService.java接口中添加代码
    //搜索书名查询书籍
    Books queryBookByName(String bookName);
  • 在BookServiceImpl类中添加代码
    public Books queryBookByName(String bookName) {
        return bookMapper.queryBookByName(bookName);
    }
  • 在allBook.jsp中新增显示全部书籍按钮
            <%--toAddBook--%>
            新增书籍
            显示全部书籍
        
  • 修改allBook.jsp中的代码
<%--查询书籍--%>
                
${error}
  • 在BookController类中添加代码
//查询书籍
    @RequestMapping("/queryBook")
    public String queryBook(String queryBookName,Model model){
        Books books = bookService.queryBookByName(queryBookName);
        
        System.err.println("queryBook=>"+books);
        List list = new ArrayList();
        list.add(books);
        if (books==null){
            list = bookService.queryAllBook();
            model.addAttribute("error","未查到书籍");
        }
        model.addAttribute("list",list);
        return "allBook";
    }
  • 修改allBook.jsp并新增搜索功能代码
            
                <%--toAddBook--%>
                新增书籍
            
            
            
                <%--查询书籍--%>
                
  • 运行查看效果

  • 查询到书籍页面

  • 查询书籍“123”后页面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/584546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号