请求
请求参数注解
/**
* 控制器方法内可用注解
* @PathVariable 从 URL 路径中获取变量值
* @RequestParam 从 URL 查询参数中获取值
* @RequestBody 将请求体中的 JSON/XML 数据绑定到对象
* @ModelAttribute 将请求参数绑定到模型对象(常用于表单提交)
*/
@GetMapping("/user/{user_id}")
public User getUser(@PathVariable Long user_id) {
// 类似laravel $request->route('user_id')
}
@GetMapping("/search")
public User getUser(@RequestParam String keyword) {
// domain.com/search?keyword=xiaoming
// 类似laravel $request->query->get('keyword')
}
@PostMapping("/submit")
public String submitForm(@ModelAttribute UserForm userForm) {
// 自动将表单字段映射到 userForm 对象
return "result";
}
@PostMapping("/user")
public User createUser(@RequestBody User user) {
// 将请求体中的 JSON 转为 User 对象
return userService.save(user);
}
与请求交互
基本都在 jakarta.servlet.http.HttpServletRequest 这个类
获得请求IP
@RestController
public class IpController {
@GetMapping("/ip")
public String getClientIp(HttpServletRequest request) {
String ipAddress = request.getRemoteAddr(); // 直接获取,可能返回代理 IP
return "Client IP: " + ipAddress;
}
}