目录
- [1. @Controller](#1. @Controller)
- [2. @RestController](#2. @RestController)
- [3. @RequestMapping](#3. @RequestMapping)
- [4. @RequestParam](#4. @RequestParam)
- [5. @PathVariable](#5. @PathVariable)
- [6. @ModelAttribute](#6. @ModelAttribute)
1. @Controller
@Controller用于标识一个类为Spring MVC的控制器。这个类的方法可以用于http请求,并返回视图或数据。
2. @RestController
@RestController=@Controller+@ResponseBody,用于RESTful风格的控制器。这个类的方法可以用于返回JSON或者XML格式的数据。
3. @RequestMapping
@RequestMapping用来指定请求的URL路径、HTTP方法以及其他请求条件。
java
@Controller
public class MyController {
// 处理GET请求
// 指定请求路径 指定请求方法 指定请求包含参数
//请求url:http://localhost:8080/greeting?type=example
@RequestMapping(value = "/greeting", method = RequestMethod.GET, params = "type=example")
public String greeting() {
return "greeting";
}
}
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping这些注解分别等同于指定了HTTP方法GET、POST、PUT和DELETE的@RequestMapping注解。
4. @RequestParam
@RequestParam用于将请求参数绑定到方法参数上。
java
@Controller
public class MyController {
// 处理GET请求,并从请求中提取参数
@RequestMapping(value = "/greet", method = RequestMethod.GET)
public String greet(
// 指定请求参数名称 参数不必须 默认值
@RequestParam(name = "name", required = false, defaultValue = "Guest") String name
) {
return "greet:"+name;
}
}
5. @PathVariable
@PathVariable用于将URL中的占位符参数绑定到方法参数上。
java
@RestController
public class MyController {
@GetMapping("/users/{userId}")
public String getUserById(@PathVariable("userId") String userId) {
return "User ID: " + userId;
}
}
6. @ModelAttribute
@ModelAttribute用于将请求参数绑定到模型对象上,并将该对象添加到模型中,以便在视图中使用。
示例
java
@Controller
public class MyController {
@RequestMapping("/")
public String index() {
return "user";
}
// 处理GET请求,返回表单页面
@RequestMapping(value = "/userForm", method = RequestMethod.GET)
public String showForm(Model model) {
model.addAttribute("user", new User());
return "user";
}
// 处理POST请求,接收表单提交的数据
@RequestMapping(value = "/submitForm", method = RequestMethod.POST)
public String submitForm(@ModelAttribute("user") User user, Model model) {
model.addAttribute("message", "User submitted: " + user.getName());
return "user";
}
}
User类
java
public class User {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
user.html
html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>User Form</h1>
<form action="/submitForm" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<br>
<button type="submit">Submit</button>
</form>
<div>
<h2>Message:</h2>
<p th:text="${message}"></p>
</div>
</body>
</html>