欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

SSM框架简单整合

时间:2023-08-06
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

<?xml version="1.0" encoding="UTF-8" ?>

spring总的配置文件:applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

2.3 Mybatis层编写

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

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

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

package com.kevin.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic 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的编写:

<?xml version="1.0" encoding="UTF-8" ?> 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映射等

<?xml version="1.0" encoding="UTF-8" ?>

2.4Spring层编写

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

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

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

<?xml version="1.0" encoding="UTF-8"?>

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

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

<?xml version="1.0" encoding="UTF-8"?>

2.5 SpringMVC层的编写

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

1、编写web.xml

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

<?xml version="1.0" encoding="UTF-8"?> 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中

<?xml version="1.0" encoding="UTF-8"?>

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给前端进行解析并展示出来。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。