Spring MVC常用注解

SpringMVC注解

@PathVariable、@RequestBody和@RequestParam

@PathVariable、@RequestBody和@RequestParam是Spring MVC框架中用于处理请求参数的注解。

  1. @PathVariable:用于处URL路径中的占位符参数。例如,对于URL /users/{id},其中的{id}是一个占位符,可以使用@PathVariable注解将其绑定到方法的参数上,如下所示:
java 复制代码
@GetMapping("/users/{id}")
public String getUserById(@PathVariable Long id) {
    // 在这里,id参数将接收URL中的占位符{id}的值
    // 进行相应的逻辑处理
    return "User details for ID: " + id;
}
  1. @RequestBody:用于处理请求体中的JSON或XML数据。它可以将请求正文的JSON或XML数据绑定到相应的Java对象上。例如,当客户端发送一个POST请求到/users时,请求体中可能包含一个JSON对象,我们可以使用@RequestBody注解将其绑定到User对象上,如下所示:
java 复制代码
@PostMapping("/users")
public String createUser(@RequestBody User user) {
    // 在这里,user对象将接收请求体中的JSON数据
    // 进行相应的逻辑处理
    return "User created successfully";
}
  1. @RequestParam:用于处理URL路径中的请求参数(query string或form data)。它可以将请求参数绑定到控制器处理方法的参数上。例如,当客户端发送一个GET请求到/users?name=John时,可以使用@RequestParam注解将name参数绑定到方法的参数上,如下所示:
java 复制代码
@GetMapping("/users")
public String getUsersByName(@RequestParam String name) {
    // 在这里,name参数将接收请求参数中的name值
    // 进行相应的逻辑处理
    return "Users with name: " + name;
}

@PathVariable和@RequstParam注解可以应用于任何类型的参数,包括基本类型、String、Integer等,而@RequestBody注解则仅适用于处理请求体中的JSON或XML数据,而且通常用于绑定到Java对象上。

@ResponseBody注解

@ResponseBody注解是Spring MVC框架中的常用注解之一。它的作用是将controller层中的方法的返回值对象转换成相应的格式,然后将其写入到HttpServletResponse响应体中。

当Controller的方法需要返回数据给客户端时,通常情况下会将返回值封装为ModelAndView对象,然后通过视图处理器将其转换为特定的格式(如HTML、JSON、XML等)后输出给客户端。

而@ResponseBody注解的作用是将Controller的方法返回值直接写入到HTTP响应的body中,从而省略了视图处理器的转换步骤,直接将数据返回给客户端。

例如,在某个Controller中有一个方法需要返回一个JSON格式的数据给客户端,那么可以在该方法上添加@ResponseBody注解,然后将返回值对象转换为JSON格式后写入到HttpServletResponse响应体中,如下所示:

java 复制代码
@Controller
public class ExampleController {
    @RequestMapping("/example")
    @ResponseBody
    public ExampleData getExampleData() {
        // 从数据库或其他地方获取要返回的数据
        ExampleData data = new ExampleData();
        data.setId(1);
        data.setName("John");
        return data;
    }
}

在这个例子中,@ResponseBody注解将ExampleData对象转换为JSON格式后写入到HttpServletResponse响应体中,从而直接将JSON数据返回给客户端。

@RestController

它结合了@Controller和@ResponseBody的功能,@Controller 注解可以用于标记一个类作为控制器类,@ResponseBody将controller层中的方法的返回值对象转换成相应的格式

@RequestMapping

@RequestMapping注解告诉Spring MVC将所有以"/users"为前缀的URL请求转发给该控制器。

相关推荐
阿杆35 分钟前
同事嫌参数校验太丑,我直接掏出了更优雅的 SpEL Validator
java·spring boot·后端
Grey Zeng10 小时前
Java SE 25新增特性
java·jdk·jdk新特性·jdk25
雨白11 小时前
Java 线程通信基础:interrupt、wait 和 notifyAll 详解
android·java
架构师沉默15 小时前
设计多租户 SaaS 系统,如何做到数据隔离 & 资源配额?
java·后端·架构
Java中文社群16 小时前
重要:Java25正式发布(长期支持版)!
java·后端·面试
每天进步一点_JL17 小时前
JVM 类加载:双亲委派机制
java·后端
用户2986985301418 小时前
Java HTML 转 Word 完整指南
java·后端
渣哥18 小时前
原来公平锁和非公平锁差别这么大
java
渣哥18 小时前
99% 的人没搞懂:Semaphore 到底是干啥的?
java
J2K18 小时前
JDK都25了,你还没用过ZGC?那真得补补课了
java·jvm·后端