SSM框架简单整合

SSM框架简单整合,第1张

SSM框架简单整合 SSM框架简单整合学习 1、准备工作:

框架搭建的环境准备,包括IDEA开发工具、maven环境搭建、Mysql服务、Sqlyog可视化界面、tomcat服务

2、步骤: 2.1数据库环境:

创建数据库表books,存放书籍信息包括:编号,名字,数量,价格,描述:

# 1.创建数据库
CREATE DATAbase ssmbuild_study;

# 2.使用数据库
USE ssmbuild_study;

# 3. 删除books表(如果该表存在)
DROp TABLE IF EXISTS books;

# 4. 创建books表
CREATE TABLE `books` (
`bookID` INT(10) NOT NULL AUTO_INCREMENT COMMENT '书籍编号',
`bookName` VARCHAR(100) NOT NULL COMMENT '书籍名称',
`bookCounts` INT(11) NOT NULL COMMENT '库存数量',
`bookPrice` DOUBLE NOT NULL COMMENT '书籍价格',
`detail` VARCHAR(200) NOT NULL COMMENT '书籍描述',
KEY `bookID` (`bookID`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

# 5.插入数据
INSERT  INTO `books`(`bookID`,`bookName`,`bookCounts`,`bookPrice`,`detail`)VALUES
(1,'Java编程思想', 169, 103.8, '从入门到放弃'),
(2,'MySQL技术内幕', 100, 79.4, '七天精通MySQL'),
(3,'Java核心技术卷1', 59, 89.6, '半个月从进门到崩溃'),
(4,'Java核心技术卷2', 104, 78.3, '原地爆炸'),
(5,'Spring源码解析', 206, 68.7, '看到怀疑人生');

# 6验证表创建是否成功:
SELECT * FROM books;

查看数据库表创建是否成功:

2.2搭建项目,准备环境

1、新建maven项目,ssmbuild_study,添加web支持

2、导入相关的maven依赖(junit、数据库驱动,数据库连接池,jsp、mybatis、mybatis-spring、spring-webmvc、spring-jdbc、lombok)


    
        junit
        junit
        4.13.1
    

    
        mysql
        mysql-connector-java
        8.0.27
    

    
        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.9
    

    
        org.mybatis
        mybatis-spring
        2.0.6
    

    
        org.springframework
        spring-webmvc
        5.3.15
    

    
        org.springframework
        spring-jdbc
        5.3.13
    

    
        org.projectlombok
        lombok
        1.18.22
    

    
        org.aspectj
        aspectjweaver
        1.9.6
    


3、maven的静态资源过滤问题:


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

4、项目的基本结构:分层创建包:

实体类:pojoservice层:servicedao层:daocontroller层:controllermybatis配置:mybatis-config.xml






spring总的配置文件:applicationContext.xml





2.3 Mybatis层编写

1、数据库配置文件:db.properties

db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/ssmbuild_study?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
db.username=root
db.password=****

2、数据库对应实体类:pojo包中编写books类

package com.kevin.pojo;

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


@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
    private int booID;
    private String bookName;
    private int bookCounts;
    private double bookPrice;
    private String detail;
}

3、dao层编写BooksMapper接口及对应的BooksMapper.xml

BooksMapper接口的编写:

package com.kevin.dao;

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

import java.util.List;


public interface BooksMapper {
    //1.增  增加一条数据信息
    int addBooks(Books books);

    //2.删  根据id删除一条数据信息
    int deleteBooksById(@Param("bookID") int id);

    //3.改  修改数据信息
    int updateBooks(Books books);

    //4.查  根据id查询对应的数据
    Books queryBooksById(@Param("bookID") int id);

    //4.查  查询全部数据
    List queryAllBooks();
}

BooksMapper.xml的编写:




    
    
        insert into ssmbuild_study.books(bookName, bookCounts, bookPrice, detail)
        values (#{bookName}, #{bookCounts}, #{bookPrice}, #{detail})
    

    
    
        delete from ssmbuild_study.books 
        where bookID = #{bookID}
    

    
    
        update ssmbuild_study.books
        set bookName = #{bookName}, bookCounts = #{bookCounts}, bookPrice = #{bookPrice}, detail = #{detail}
        where bookID = #{bookID};
    

    
    
        SELECT * from ssmbuild_study.books;
    

4、service层编写BookService接口及接口实现类,用于调用dao层

BookService接口的编写,抽象方法与dao层的抽象方法类似

package com.kevin.service;

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

import java.util.List;


public interface BookService {
    //1.增  增加一条数据信息
    int addBooks(Books books);

    //2.删  根据id删除一条数据信息
    int deleteBooksById(int id);

    //3.改  修改数据信息
    int updateBooks(Books books);

    //4.查  根据id查询对应的数据
    Books queryBooksById(int id);

    //4.查  查询全部数据
    List queryAllBooks();
}

BookServiceImpl:实现BookService接口,重写抽象方法,调用dao层的方法,和数据库进行交互

package com.kevin.service;

import com.kevin.dao.BooksMapper;
import com.kevin.pojo.Books;
import java.util.List;


public class BooksServiceImpl implements BookService{
    // service层调用dao层,该实现类中需要定义dao层的属性
    private BooksMapper booksMapper;

    public void setBooksMapper(BooksMapper booksMapper) {
        this.booksMapper = booksMapper;
    }

    @Override
    public int addBooks(Books books) {
        return booksMapper.addBooks(books);
    }

    @Override
    public int deleteBooksById(int id) {
        return booksMapper.deleteBooksById(id);
    }

    @Override
    public int updateBooks(Books books) {
        return booksMapper.updateBooks(books);
    }

    @Override
    public Books queryBooksById(int id) {
        return booksMapper.queryBooksById(id);
    }

    @Override
    public List queryAllBooks() {
        return booksMapper.queryAllBooks();
    }
}

5、Mybatis核心配置文件,完成相关项的配置,包括起别名、添加mapper映射等




    
        
    
    
        
    


2.4Spring层编写

该层主要完成与dao 、service 层的配置,上接MVC和前端的交互,下接Mybatis和数据库的交互,起到一个承上启下,进行中间连接整合的作用

1、spring和dao层的整合:spring-dao.xml,并将其导入到总的spring配置文件中

绑定数据源配置创建dataSource的bean创建sqlSessionFactory的bean(创建sqlSessionTemplate)




    
    

    
    
        
        
        
        
        
        
        
        

    

    
    
        
        
        
        
    


    
    
        
        
        
        
    



2、spring和service层的整合:spring-service.xml

扫描service包,自动注入service包中的实现类注入到bean配置事务管理器配置aop织入事务





    
    
    
    
        
    
    
    
        
        
    
    
    
    
        
            
            
        
    

    
    
        
        
    



2.5 SpringMVC层的编写

该层主要负责controller层和前端的交互

1、编写web.xml

注册dispatcherServlet:此处需要注意,绑定的spring配置文件为总的配置文件解决乱码问题




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

        1
    
    
        springmvc
        /
    

    
    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
    
    
        encodingFilter
        
@Controller
@RequestMapping("/books")
public class BooksController {
    // controller层调用service层
    @Autowired
    @Qualifier("bookServiceImpl")
    private BookService bookService;
	
    // 获取全部数据信息
    @RequestMapping("/allBook")
    public String getAllBooks(Model model){
        List booksList = bookService.queryAllBooks();
        model.addAttribute("queryResult", booksList);
        return "allBooks";
    }
}

3、跳转到了allBooks页面,在WEB-INF下新建jsp包,创建allBooks.jsp:

(查询所有书籍信息)

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

    
        书籍列表
        
        
    
    
        

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

            
                
                    <%--toAddBooks请求--%>
                    新增书籍
                    显示全部书籍
                


                
                    <%--查询书籍请求--%>
                    
                
            

            
                
                    
                        
                            
                                书籍编号
                                书籍名字
                                书籍数量
                                书籍价格
                                书籍详情
                                 *** 作
                            
                        
                        <%--书籍从数据库中查询出来,从这个list中遍历出来:foreach遍历--%>
                        
                            <%--
                                foreach遍历,会在文件头部导入:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
                            --%>
                            
                                
                                    ${books.bookID}
                                    ${books.bookName}
                                    ${books.bookCounts}
                                    ${books.bookPrice}
                                    ${books.detail}
                                    
                                        修改
                                          |  
                                        删除
                                    
                                
                            
                        
                    
                
            
        
    

4、将所有的spring配置文件均导入到总的spring配置文件applicationContext.xml中




    
    
    


5、index.jsp:

<%--
  Created by IntelliJ IDEA.
  User: DCH
  Date: 2022/2/2
  Time: 16:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    首页
    
      a {
        text-decoration: none;
        color: black;
        font-size: 18px;
      }
      h2 {
        width: 180px;
        height: 38px;
        margin: 100px auto;
        text-align: center;
        line-height: 38px;
        background: deepskyblue;
        border-radius: 4px;
      }
    
  
  
  
    点击进入书籍列表页
  
  

6、配置tomcat,启动运行(启动tomcat之前需要将所有的依赖在artifact中建立lib包)

tomcat成功启动之后,跳转到首页index.jsp:

2.6 Controller和jsp的完善

完成对数据库的增删改查 *** 作

1、新增书籍:controller层:

@RequestMapping("/toAddBooksPages")
public String toAddBooksPages(){
    return "addBooks";
}


@RequestMapping("/addBooks")
public String addBooks(Books books){
    System.out.println("新添加的书籍:" + books);
    bookService.addBooks(books);
    // 新增书籍之后,重定向到书籍列表显示页面
    return "redirect:/books/getAllBooks";
}

编写addBooks.jsp:

<%--
  Created by IntelliJ IDEA.
  User: DCH
  Date: 2022/2/2
  Time: 21:42
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    新增书籍
    
    
    




    
        
            
                
                    新增书籍
                
            
        
    
    



点击书籍列表显示页面的新增书籍按钮,跳转:

点击添加按钮后, *** 作数据库完成新增,随后重定向到显示书籍列表页:

2、修改书籍信息:

@RequestMapping("/toUpdateBooksPages")
public String toUpdateBooksPages(int id, Model model){
    Books books = bookService.queryBooksById(id);
    System.out.println("根据id查询到的数据为:" + books);
    // 通过model将获取到的数据传回给前端
    model.addAttribute("queryResult",books);
    return "updateBooks";
}



@RequestMapping("/updateBooks")
public String updateBooks(Books books){
    System.out.println("修改的书籍:" + books);
    // service层调用方法更新
    bookService.updateBooks(books);
    // 修改后,重定向到书籍列表显示页面
    return "redirect:/books/getAllBooks";
}

编写updateBooks.jsp:

<%--
  Created by IntelliJ IDEA.
  User: DCH
  Date: 2022/2/3
  Time: 9:07
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    书籍修改页面
    
    
    




    
        
            
                
                    修改书籍
                
            
        
    
    



点击书籍列表页的修改按钮,跳转至修改页面,对选中的书籍编号进行修改,会先查询出该条数据显示出来:

点击修改之后,后端dao层完成对数据的update *** 作,修改成功之后,重定向到显示所有列表页面:

3、删除书籍:删除之后,跳转到获取所有书籍信息页面:

//通过restFul风格
@RequestMapping("/deleteBooks/{bookID}")
public String deleteBooks(@PathVariable("bookID") int id){
    // service 层调用删除方法
    bookService.deleteBooksById(id);
    // 删除之后,重定向到书籍列表显示页面
    return "redirect:/books/getAllBooks";
}

在书籍列表页面,点击右侧的删除按钮,直接完成删除,删除后重定向到书籍列表显示页面:

4、查询书籍信息(ByName):

查询结果无论单个或者多个均用list存储,在展示给前端时可以复用allBooks.jsp显示。

// 查询书籍
@RequestMapping("queryBooks")
public String queryBooks(String queryBookName, Model model){
    List booksList = new ArrayList<>();
    booksList = bookService.queryBooksByName(queryBookName);
    for (Books books : booksList) {
        System.out.println("查询出来的book信息为:" + books);
    }
    if(booksList.size() == 0){
        booksList = bookService.queryAllBooks();
        model.addAttribute("error", "未查到该书籍");
    }
    // 查询全部和查询单个页面可以复用,需要使用 List 接受并传递给前端
    model.addAttribute("booksList", booksList);
    return "allBooks";
}

根据指定名字查询书籍:

若没有查到该信息,显示未找到,并返回所有书籍信息:

查询到了对应的书籍:

至此,整合项目搭建完毕。完成了通过前端实现对后端的访问:项目分层结构如下所示:

controller层接收前端请求,调用service层,service层调用dao层,dao层负责完成和数据库的交互,并将处理结果沿路返回至controller层,controller层接收到处理后的数据,通过Model给前端进行解析并展示出来。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5722393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存