- 一、整体思路
- 二、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的前身), 整合中有容器。
- 第一个容器SpringMVC容器, 管理Controller控制器对象的。
- 第二个容器Spring容器,管理Service,Dao,工具类对象的
我们要做的把使用的对象交给合适的容器创建,管理。 把Controller还有web开发的相关对象交给springmvc容器, 这些web用的对象写在springmvc配置文件中
service,dao对象定义在spring的配置文件中,让spring管理这些对象
springmvc容器和spring容器是有关系的,关系已经确定好了
springmvc容器是spring容器的子容器, 类似java中的继承。 子可以访问父的内容
在子容器中的Controller可以访问父容器中的Service对象, 就可以实现controller使用service对象
实现步骤:
-
使用ssm的mysql库, 表使用student(id auto_increment, name, age)
-
新建maven web项目
-
加入依赖
springmvc,spring,mybatis三个框架的依赖,jackson依赖,mysql驱动,druid连接池
jsp,servlet依赖 -
写web.xml
- 注册DispatcherServlet ,目的:1.创建springmvc容器对象,才能创建Controller类对象。2.创建的是Servlet,才能接受用户的请求。
- 注册spring的监听器:ContextLoaderListener,目的: 创建spring的容器对象,才能创建service,dao等对象。
- 注册字符集过滤器,解决post请求乱码的问题
-
创建包, Controller包, service ,dao,实体类包名创建好
-
写springmvc,spring,mybatis的配置文件
- springmvc配置文件
- spring配置文件
- mybatis主配置文件
- 数据库的属性配置文件
-
写代码, dao接口和mapper文件, service和实现类,controller, 实体类。
-
写jsp页面
二、SSM整合注解开发
需求:完成学生的注册和信息浏览
1. 建立Student
2. 建立Web工程
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. 定义程序结构
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
由于自动生成的是这样的,版本太低,需要换成现在高的版本,直接把之前写好的复制过来就行
换成这样
- 注册 ContextLoaderListener
- 注册 DisatcherServlet
- 注册字符集过滤器
- 同时创建 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运行即可,之后再添加新的功能