目录
什么是Spring MVC
什么是MVC
Spring MVC 和MVC的区别
怎么学Spring MVC
Spring MVC的创建和连接
@RequestMapping注解
获取参数
传递基础数据类型/包装类型(无注解)
添加@RequestParam注解(使用在方法参数上)
传递自定义对象
form-data格式中的文件上传
接收json格式的数据
什么是Spring MVC
官方解释:Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more commonly known as “Spring MVC”.
翻译后即为:Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从一开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来自其源模块的名称(Spring-webmvc),但它通常被称为“Spring MVC”。
对Servlet有所了解的人应该知道,Servlet是jdk提供的基于java语言进行web开发的一套标准规范(定义了很多api类或接口等等),我们开发的java web项目部署到web服务器上,运行起来本质上,是调用该web服务器的具体实现。以此达到程序基于servlet标准规范来开发,可以无缝运行在任意支持servlet的web服务器中(servlet容器->替我们管理servlet所有实例对象的整个生命周期)。
什么是MVC
MVC 是 Model View Controller 的缩写,它是软件工程中的一种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。
- Model(模型):用于请求数据和响应数据的转换。(自动的将请求数据转换为java对象)
- View(视图):返回给前端的。
- Controller(控制器):用于处理请求和响应
Spring MVC 和MVC的区别
MVC 是一种思想,而 Spring MVC 是对 MVC 思想的具体实现。
怎么学Spring MVC
学习Spring MVC我们只需要掌握以下3个功能:
- 连接功能:将浏览器和java程序连接起来
- 获取参数的功能:用户访问是时候会带一些参数,在程序中要想办法获取到参数
- 输出数据功能:执行了业务逻辑后,要把程序执行的结果返回给用户
Spring MVC的创建和连接
Spring MVC 可以基于 Spring Boot 创建,也就是创建一个 Spring Boot 项目,创建一个UserController类,具体代码如下:
@Controller
@Slf4j
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login")
public String login(){
return "/index.html";
}
}
访问http://localhost:8080/user/login 就能打印登录的信息了
@RequestMapping注解
作用:表示服务资源的信息(路径,请求方法,响应类型等等)
可以使用在类和方法上,服务资源路径(类上路径+方法上路径)
@RequestMapping默认是get方式的请求(可以使用postman来测试)
如何使用post方法
获取参数
传递基础数据类型/包装类型(无注解)
在 Spring MVC 中可以直接用方法中的参数来实现传参,比如以下代码:
@Controller
@RequestMapping("/test")
@Slf4j
@ResponseBody
public class TestController {
@RequestMapping("/simpleType")
public String SimpleType(String username, String password, Integer age){
log.debug("username={},password={},age={}",username,password,age);
return "好好学习";
}
}
在postman中的执行结果为:
注意:
如果是基础数据类型,请求数据就必须有这个字段
前端字段的类型,要和后端字段类型一致,否则也会报错
添加@RequestParam注解(使用在方法参数上)
使用@RequestParam注解,默认表示请求必须包含该字段,也可以配置为选填。
public String SimpleType有注解(@RequestParam String username,
@RequestParam String password,
@RequestParam Integer age){
log.debug("username={},password={},age={}",username,password,age);
return "好好学习";
}
如果没包含就会报错
设置required=false则表示选填
@RequestMapping("/requestParam")
public String SimpleType有注解(@RequestParam String username,
@RequestParam(required = false) String password,
@RequestParam Integer age){
log.debug("username={},password={},age={}",username,password,age);
return "好好学习";
}
此时password为选填字段
传递自定义对象
@RequestMapping("/object")
public String 对象(User user){
log.debug("user={}",user);
return "好好学习";
}
public class User {
private String username;
private String password;
Integer age;
}
form-data格式中的文件上传
@RequestMapping("/upload1")
public String 上传文件1(MultipartFile head){
log.debug("接收的上传文件名称:{}", head.getOriginalFilename());
return "好好学习";
}
接收json格式的数据
//接收json格式的数据:@RequestBody
@RequestMapping("/json")
public String json(@RequestBody User user){
log.debug("user对象接收的数据:{}", user);
return "好好学习";
}