SSM整合开发

目录
  • 一、整体思路
  • 二、SSM整合注解开发
    • 1. 建立Student
    • 2. 建立Web工程
    • 3. maven依赖
    • 4. 定义程序结构
    • 5. 编写配置文件
    • 6. 定义web.xml
    • 7. 实体类
    • 8. Dao接口和映射文件
    • 9. Service接口和实现类
    • 10. 处理器
    • 11. 首页
    • 12. 注册页面
    • 13. 注册结果
    • 14. 浏览页面

一、整体思路

SSM: SpringMVC + Spring + MyBatis.

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

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

SSM整合也叫做SSI (IBatis也就是mybatis的前身), 整合中有容器。

  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对象

实现步骤:

  1. 使用ssm的mysql库, 表使用student(id auto_increment, name, age)

  2. 新建maven web项目

  3. 加入依赖

    springmvc,spring,mybatis三个框架的依赖,jackson依赖,mysql驱动,druid连接池
    jsp,servlet依赖

  4. 写web.xml

    • 注册DispatcherServlet ,目的:1.创建springmvc容器对象,才能创建Controller类对象。2.创建的是Servlet,才能接受用户的请求。
    • 注册spring的监听器:ContextLoaderListener,目的: 创建spring的容器对象,才能创建service,dao等对象。
    • 注册字符集过滤器,解决post请求乱码的问题
  5. 创建包, Controller包, service ,dao,实体类包名创建好

  6. 写springmvc,spring,mybatis的配置文件

    • springmvc配置文件
    • spring配置文件
    • mybatis主配置文件
    • 数据库的属性配置文件
  7. 写代码, dao接口和mapper文件, service和实现类,controller, 实体类。

  8. 写jsp页面

二、SSM整合注解开发

需求:完成学生的注册和信息浏览

1. 建立Student

SSM整合开发_第1张图片

2. 建立Web工程

通过maven
SSM整合开发_第2张图片

3. maven依赖




  4.0.0

  com.md
  07-ssm
  1.0-SNAPSHOT
  war



  
    UTF-8
    1.8
    1.8
  

  


    
      junit
      junit
      4.11
      test
    


    
    
      javax.servlet
      javax.servlet-api
      3.1.0
      provided
    
    
    
      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-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
        
          **/*.properties
          **/*.xml
        
        false
      
    



  


4. 定义程序结构

SSM整合开发_第3张图片

5. 编写配置文件

jdbc属性配置文件jdbc.properties

jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=123456
jdbc.maxActive=20

Spring配置文件applicationContext.xml





    



    
    
    


    
    
    
        
        
        
        
    






    
    
        
        
    




    
    
        
        
        
    


    


SpringMVC的配置文件,dispatcherServlet.xml





    

    
    
    



    
    
        
        
    



    
    




mybatis的配置文件 , mybatis.xml







    
        
        
    



    
    
        
    


    
    

        
        
    


6. 定义web.xml

由于自动生成的是这样的,版本太低,需要换成现在高的版本,直接把之前写好的复制过来就行
SSM整合开发_第4张图片

换成这样

SSM整合开发_第5张图片

  1. 注册 ContextLoaderListener
  2. 注册 DisatcherServlet
  3. 注册字符集过滤器
  4. 同时创建 Spring 的配置文件和 SpringMVC 的配置文件(上面已经创建好了)







  

  
    springmvc
    org.springframework.web.servlet.DispatcherServlet

    
      contextConfigLocation
      
      classpath:conf/dispatcherServlet.xml
    
    1
  


  
    springmvc
    *.do
  




  
  
    contextConfigLocation
    
    classpath:conf/applicationContext.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  





  
  
  
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
    
      encoding
      utf-8
    


    
      forceRequestEncoding
      true
    

    
      forceResponseEncoding
      true
    
  

  
    characterEncodingFilter
    
    /*
  



7. 实体类

package com.md.domain;

/**
 * @author MD
 * @create 2020-08-13 20:21
 */
public class Student {
    private Integer id;
    private String name;
    private Integer age;

    public Student() {
    }

    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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

8. Dao接口和映射文件

都在是dao包下,且文件名相同

package com.md.dao;

import com.md.domain.Student;

import java.util.List;

/**
 * @author MD
 * @create 2020-08-13 20:22
 */
public interface StudentDao {
    int insertStudent(Student student);

    List selectStudents();

}

StudentDao.xml




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

    
    

9. Service接口和实现类

package com.md.service;

import com.md.domain.Student;

import java.util.List;

/**
 * @author MD
 * @create 2020-08-13 20:31
 */
public interface StudentService {

    int addStudent(Student student);

    List findStudents();

}

实现类

package com.md.service.impl;

import com.md.dao.StudentDao;
import com.md.domain.Student;
import com.md.service.StudentService;
import org.springframework.stereotype.Service;

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

/**
 * @author MD
 * @create 2020-08-13 20:32
 */

@Service
public class StudentServiceImpl implements StudentService {

    // 引用数据类型的自动注入@Resource、@Autowired
    @Resource
    private StudentDao studentDao;



    @Override
    public int addStudent(Student student) {

        int nums = studentDao.insertStudent(student);
        return nums;
    }

    @Override
    public List findStudents() {
        return studentDao.selectStudents();
    }
}

10. 处理器

在controller包下

package com.md.controller;

import com.md.domain.Student;
import com.md.service.StudentService;
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 javax.annotation.Resource;
import java.util.List;

/**
 * @author MD
 * @create 2020-08-13 20:37
 */

@Controller
@RequestMapping("/student")
public class StudentController {

    // 自动注入
    @Resource
    private StudentService service;

    // 注册学生
    @RequestMapping("/addStudent.do")
    public ModelAndView addStudent(Student student){
        ModelAndView mv = new ModelAndView();
        String tips = "注册失败";
        // 调用service处理student
        int nums = service.addStudent(student);
        if (nums > 0){
            tips = "注册成功";
        }

        // 添加数据,指定页面
        mv.addObject("tips",tips);
        mv.setViewName("result");
        return mv;
    }



    // 处理查询,响应ajax
    @RequestMapping("/queryStudent.do")
    @ResponseBody
    public List queryStudent(){

        List students = service.findStudents();

        // 会被框架转为json的数组
        return students;
    }


}

11. 首页

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>


    功能入口
    



    




12. 注册页面

addStudent.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>


    学生注册
    



    
姓名:
年龄:
    

13. 注册结果

在/WEB-INF/jsp/result.jsp

<%--
  Created by IntelliJ IDEA.
  User: MD
  Date: 2020/8/13
  Time: 20:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title



注册结果:${tips}

14. 浏览页面

listStudent.jsp

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

<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>



    学生信息
    
    
    


    
学号 姓名 年龄

此时再配置Tomcat运行即可,之后再添加新的功能

你可能感兴趣的:(SSM整合开发)