1、@Controller
类注解
将一个 Java 类标记为 Spring MVC 的 Controller,标识一个类为 Spring MVC 控制器。
该类中的方法可以使用 @RequestMapping、@GetMapping、@PostMapping 等注解来映射 HTTP 请求。
2、@RestContoller
类注解
= @Controller + @ResponseBody(类级别)
@Controller 和 @ResponseBody 的组合,专为返回 数据(如 JSON、XML、纯文本等) 而非视图页面而设计。
3、@ResponseBody
既是类注解又是方法注解
用于将控制器方法的返回值直接写入 HTTP 响应体(Response Body),而不是被解析为视图名称(如 Thymeleaf 模板名)。
java
/**
* 返回视图
* @return
*/
@RequestMapping("/re1")
public String re1() {
return "/test.html";
}
/**
* 返回数据
* @return
*/
@ResponseBody
@RequestMapping("/re2")
public String re2() {
return "/test.html";
}
4、@RequestMapping
既是类注解也是方法注解
Spring MVC 中最核心的请求映射注解 ,用于将 HTTP 请求(URL + 方法 + 参数等) 绑定到具体的控制器方法上。
java
@ResponseBody
@RequestMapping(value = "/re7", produces = "application/json")
public String re7() {
return "{\"OK\": 1}";
}
5、@GetMapping
方法注解
是 Spring Framework 提供的一个组合注解(Composed Annotation), 它是 @RequestMapping(method = RequestMethod.GET) 的快捷方式 ,专门用于映射 HTTP GET 请求。
6、@RequestParam
用于参数绑定/参数重命名,@RequestParam 用于将 HTTP 请求中的参数 (如 URL 查询参数 ?name=Alice 或表单数据)绑定到控制器方法的某个参数上。
| 属性 | 说明 | 默认值 |
|---|---|---|
value / name |
指定请求中的参数名 | - |
required |
是否必须传该参数 | true |
defaultValue |
参数未提供时的默认值 | - |
java
@RequestMapping("/r6")
public String r6(@RequestParam(value = "wd", required = false, defaultValue = "000000") String keyword) {
return "接收到参数, keyword:" + keyword;
}
默认情况下,请求中参数名相同的多个值,是封装到数组。如果要封装到集合,要使用 @RequestParam 绑定参数关系
java
@RequestMapping("/r8")
public String r8(@RequestParam(required = false) List<String> list) {
return list.toString();
}
7、@RequestBody
方法注解
请求正文,意思是这个注解作用在请求正文的数据绑定,请求参数必须写在请求正
接收 JSON 对象,需要使用 @RequestBody 注解
java
/**
* 接收一个json字符串, 并把json字符串转为Person对象
* @param person
* @return
*/
@RequestMapping("/r9")
public String r9(@RequestBody Person person) {
return person.toString();
}

8、@PathVariable
路径变量
作用在请求 URL 路径上的数据绑定,默认传递参数写在 URL 上,SpringMVC 就可以获取到
java
/**
* 获取 URL 中的参数
*/
@RequestMapping("/r10/{id}")
public String r10(@PathVariable Integer id) {
return "从 url 中获取 id:"+id;
}
java
@RequestMapping("r11/{id}/{name}")
public String r11(@PathVariable Integer id, @PathVariable("name") String userName) {
return "解析参数 id:" + id + ",name:" + userName;
}
9、@RequestPart
用于上传文件
java
@RequestMapping("/r12")
public String getfile(@RequestPart("file") MultipartFile file) throws IOException {
// 获取文件名称
String fileName = file.getOriginalFilename();
System.out.println(fileName);
//文件上传
file.transferTo(new File("D:\\AAA Java/" + file.getOriginalFilename()));
return "接收到文件名为:" + fileName;
}

10、@CookieValue
用于获取 Cookie 信息
java
@RequestMapping("/getCookie2")
public String getCookie2(@CookieValue("name") String name) {
return "获取 Cookie 成功, name:" + name;
}
11、@SessionAttribute
用于获取 Session 信息
java
@RequestMapping("/getSession3")
public String getSession3(@SessionAttribute("address") String address) {
return "获取 Session 成功, address:" + address;
}
12、@RequestHeader
用于获取头部信息
java
@RequestMapping("/getHeader2")
public String getHeader2(@RequestHeader("User-Agent") String userAgent) {
return "获取header成功. userAgent:"+ userAgent;
}