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

最详细SSM整合,从0到实现(附带所有代码和配置文件)

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

最详细SSM整合,从0到实现(附带所有代码和配置文件)

文章目录
  • SSM 整合开发 (SpringMVC + Spring + Mybatis)
    • 一、概述
    • 二、实现步骤
    • 三、配置文件及其代码
      • 1. 首先创建 mysql 表
      • 2. 创建好数据库表之后,就在idea 里面创建一个 JavaWeb 项目(既然大家都学到这里了,创建项目大家应该都会了,就不做演示了)
      • 3. maven 依赖:pom.xml 文件
      • 4. 在 web.xml 文件中注册中央处理器,spring 监听器,全局过滤器(设置post请求 字符编码为 utf-8)
      • 5. SpringMVC 配置文件,声明组件扫描器,注解开发支持,以及WEB-INF路径 dispatcherServlet.xml
      • 6. 创建 Spring 配置文件:applicationContext.xml
      • 7. 含有数据库连接信息的 jdbc.properties 文件
      • 8. mybatis配置文件
      • 9. 编写domain(实体类)代码,dao 层代码,service 层代码,Controller 层代码

SSM 整合开发 (SpringMVC + Spring + Mybatis)

对于刚刚学习完 SSM 框架的 Java 开发者来说,将三个框架整合在一起并非容易的事情,特别是 ssm 中各种各样的配置文件
如果一步小心哪里写错了,就会导致服务器启动不起来,然后花费大量的时间去寻找错误,到最后甚至删除项目重新创建,于是我将
整合 SSM 的步骤分享出来,从 数据库 再到配置文件再到业务代码,最终实现对数据库表中的数据完成插入操作以及 ajax 返回
查询数据。

一、概述

SpringMVC:视图层,界面层,负责接收请求,显示处理结果
Spring:业务层,管理 Service ,dao,工具类对象
Mybatis:持久层,访问数据库

用户发起请求 — SpringMVC 接收 — Spring中的Service对象 — Mybatis 处理数据

**ssm 整合也叫做ssi,整合中有容器

  1. 第一个容器SpringMVC,管理Controller 控制器对象
  2. 第二个容器Spring容器,管理Service,Dao,工具类对象等
    我们要做的就是吧使用的对象交给合适的容器创建,管理。把Controller还有web开发的相关对象
    交给SpringMVC 容器,这些 web 用的对象在SpringMVC 配置中

Service,dao 对象定义在 spring 的配置文件中,让spring 管理这些对象。

SpringMVC 容器和 Spring 容器是有关系的,关系以及确定好了
SpringMVC 容器是 Spring 的子容器,类似java 中的继承。子可以访问父的容器
在子容器中的Controller 可以访问父容器中的 Service 对象,就可以实现Controller 使用Service对象**

二、实现步骤
0. 使用 SpringDB 的 mysql
1. 新建maven web 项目
2. 加入依赖
    ssm 三个框架的依赖,jackson依赖,mysql,druid 连接池
    jsp,servlet
3. 写web.xml 
    1. 注册 DispatcherServlet,目的:1.创建springmvc 容器对象,才能创建Controller 对象,创建的是Servlet才能接受用户请求
    2. 注册spring 监听器:ContextLoaderListener,目的:创建 spring 的容器对象,才能创建 Service dao等对象
    3. 字符集过滤器,解决post 请求乱码问题
4. 创建包,Controller包,Service 包, Dao 包,实体类包
5. 写springmvc,spring,Mybatis 的配置文件
三、配置文件及其代码 1. 首先创建 mysql 表
create table student(
    id int primary key auto_increment,
    name varchar(30) not null ,
    age int not null 
) 

2. 创建好数据库表之后,就在idea 里面创建一个 JavaWeb 项目(既然大家都学到这里了,创建项目大家应该都会了,就不做演示了)

将MVC三层构建所对应的包创建好:Controller,dao,service,domain,utils

3. maven 依赖:pom.xml 文件


  4.0.0

  com.lcx
  SSM
  1.0-SNAPSHOT
  SSM
  war

  
    UTF-8
    1.8
    1.8
      5.7.1
  

  
    
      
      javax.servlet
      javax.servlet-api
      4.0.1
      provided
                                                                            
    
      org.junit.jupiter
      junit-jupiter-api
      ${junit.version}
      test
    
    
      org.junit.jupiter
      junit-jupiter-engine
      ${junit.version}
      test
    

      
          javax.servlet.jsp
          jsp-api
          2.2.1-b03
          provided
      
    
      org.springframework
      spring-webmvc
      5.2.5.RELEASE
    
    
      org.springframework
      spring-tx
      5.2.5.RELEASE
    
    
      org.springframework
      spring-jdbc
      5.2.5.RELEASE
    
    
      com.fasterxml.jackson.core
      jackson-core
      2.9.0
    
    
      com.fasterxml.jackson.core
      jackson-core
      2.9.0
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.0
    
    
      org.mybatis
      mybatis-spring
      1.3.1
    
    
      org.mybatis
      mybatis
      3.5.1
    
    
      mysql
      mysql-connector-java
      5.1.9
    
    
      com.alibaba
      druid
      1.1.12
    
  
  
    
      
        src/main/java
        
          ***.xml
        
        false
      
    
  



4. 在 web.xml 文件中注册中央处理器,spring 监听器,全局过滤器(设置post请求 字符编码为 utf-8)


    
    
        MyWeb
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:config/dispatcherServlet.xml
        
        
        1
    
    
        MyWeb
        *.do
    

    


    
    
        contextConfigLocation
        classpath:config/applicationContext.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            utf-8
        
        
            forceRequestEncoding
            true
        
        
            forceResponseEncoding
            true
        
    
    
        characterEncodingFilter
        /*
    


5. SpringMVC 配置文件,声明组件扫描器,注解开发支持,以及WEB-INF路径 dispatcherServlet.xml





    

    
        
        
    
    




6. 创建 Spring 配置文件:applicationContext.xml





    

    
        
        
        
    

    
        
        

    


    
        
        
    

    





7. 含有数据库连接信息的 jdbc.properties 文件
# 加上 characterEncoding=utf-8 可以防止乱码错误
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.psw=123
8. mybatis配置文件




    
        
    

    

        
    



9. 编写domain(实体类)代码,dao 层代码,service 层代码,Controller 层代码
  1. domain
package ssm.lcx.domain;

import java.util.Objects;

public class Student {
    private Integer id;
    private String name;
    private Integer age;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Student)) return false;
        Student student = (Student) o;
        return Objects.equals(getId(), student.getId()) && Objects.equals(getName(), student.getName()) && Objects.equals(getAge(), student.getAge());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getId(), getName(), getAge());
    }

    public Student() {
    }

    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

  1. dao 接口以及对应的 mybatis—mapper 文件
package ssm.lcx.dao;

import ssm.lcx.domain.Student;

import java.util.List;

public interface StudentDao {
    int insertStudent(Student student);
    List selectStudent();


}




    
    
        insert into student(name,age) value (#{name},#{age})
    



3. service 接口和实现类
```java
package ssm.lcx.service;

import ssm.lcx.domain.Student;

import java.util.List;

public interface StudentService {
    int addStudent(Student student);
    List findStudent();
}

package ssm.lcx.service.impl;

import org.springframework.stereotype.Service;
import ssm.lcx.dao.StudentDao;
import ssm.lcx.domain.Student;
import ssm.lcx.service.StudentService;

import javax.annotation.Resource;
import java.util.List;

@Service
public class StudentServiceImpl implements StudentService {
    // 引用类型的自动注入
    @Resource
    private StudentDao studentDao;
    @Override
    public int addStudent(Student student) {
        int num = studentDao.insertStudent(student);
        return num;
    }

    @Override
    public List findStudent() {
        List list = studentDao.selectStudent();
        return list;
    }
}

  1. controller 代码实现
package ssm.lcx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import ssm.lcx.domain.Student;
import ssm.lcx.service.StudentService;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping("/student")
public class StudentController {
    @Resource
    private StudentService service;
    // 注册学生
    @RequestMapping("/addStudent.do")
    public ModelAndView addStudent(Student student){
        String tips = "注册失败";
        ModelAndView mv = new ModelAndView();
        int nums = service.addStudent(student);
        if (nums > 0) {
            // 注册成功
            tips = "学生 " +student.getName()+ " 注册成功";
        }
        mv.addObject("tips",tips);
        mv.setViewName("result");
        return mv;
    }
    // 处理查询,响应 ajax
    @RequestMapping("/queryStudent.do")
    @ResponseBody
    public List queryStudent(){
        List students = service.findStudent();
        return students;
    }
}

最终完成整个 SSM 整合

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

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

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