目录
- 什么是Spring MVC
- 实现客户端和程序之间的“连接”
- 1.1 @RequestMapping
- 1.2@GetMapping
- 1.3@PostMapping
- 获取参数
- 2.1.1 获取单个参数
- 2.1.2 获取多个参数
- 2.1.3 获取对象
- 2.2 后端参数重命名
- 2.3 @RequestBody 接收JSON对象
- 2.4 获取URL中参数@PathVariable
- 2.5 上传⽂件@RequestPart
- 2.6 获取Cookie/Session/header
- 返回数据
- 请求转发或请求重定向
什么是Spring MVC
Spring MVC 特性:
1.Spring MVC 是一个Web框架。
2.Spring MVC 是基于Servlet API 构建的。
MVC是Model View Controller 的缩写,它是软件工程中的一种软件框架模式,它把软件系统分为模型、视图和控制器三个基本部分。
MVC执行流程:
1.用户的请求首先先到Controller。
2.Controller将请求转发给Model。
3.Model处理业务并将数据结果给Controller。
4.Controller会将数据给View引擎。
5.View转换数据生成给最终用户。
MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。
现在绝⼤部分的 Java 项⽬都是基于 Spring(或 Spring Boot)的,⽽ Spring 的核⼼就是 Spring MVC。
实现客户端和程序之间的“连接”
1.1 @RequestMapping
@RequestMapping是 Spring Web 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的。
1.2@GetMapping
@GetMapping:实现HTTP连接,但只支持GET类型的请求
1.3@PostMapping
@PostMapping:实现HTTP连接,但只支持POST类型的请求
获取参数
2.1.1 获取单个参数
2.1.2 获取多个参数
2.1.3 获取对象
package com.example.demo.model;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private String password;
private int age;
}
package com.example.demo.controller;
import com.example.demo.model.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/add")
public User add(User user) {
return user;
}
}
2.2 后端参数重命名
2.3 @RequestBody 接收JSON对象
2.4 获取URL中参数@PathVariable
2.5 上传⽂件@RequestPart
2.6 获取Cookie/Session/header
获取Cookie
/**
* 获取 Cookie
* @param ck
* @return
*/
@RequestMapping("/getcookie")
public String getCookie(@CookieValue("java")String ck) {
return ck;
}
获取Session
/**
* 获取 Session
*
* @param name
* @return
*/
@RequestMapping("/get_sess")
public String getSess(@SessionAttribute(required = false, value = "SESSION_KEY") String name) {
return name;
}
获取header
@RequestMapping("/header")
@ResponseBody
public String header(@RequestHeader("User-Agent") String userAgent) {
return "userAgent:"+userAgent;
}
返回数据
请求转发或请求重定向
forward VS redirect
return 不但可以返回⼀个视图,还可以实现跳转,跳转的⽅式有两种:
forward 是请求转发;
redirect:请求重定向。
// 请求重定向
@RequestMapping("/index")
public String index(){
return "redirect:/index.html";
}
// 请求转发
@RequestMapping("/index2")
public String index2(){
return "forward:/index.html";
}