SpringMVC参数接收与数据响应

SpringMVC如何接受请求参数(普通类型参数/对象类型参数/数组/json数据等)

1、普通类型参数

(1)在可以在方法参数上使用@RequestParam注解来绑定请求参数,此注解允许指定请求参数的名称,以及是否是必须传的参数。

@RequestMapping("/example")
public String exampleMethod(@RequestParam("paramName") String param) {
 // 处理参数
 return "viewName";
}

(2)如果需要传的参数是URL的一部分,可以使用@PathVariable注解来绑定路径参数。

@RequestMapping("/example/{id}")
public String exampleMethod(@PathVariable("id") int id) {
 // 处理路径参数
 return "viewName";
}

2、对象类型参数

常用的是@RequestBody注解,如果请求的内容是json或xml格式的数据,并且希望将其转为对象,可以使用@RequestBody注解,springmvc将自动进行请求体到对象的转换。

3、数组类型

(1)@RequestParam注解,通过此注解来绑定请求参数到数组,使用“value”属性指定请求参数的名称,并将方法参数声明为数组类型。

@RequestMapping("/example")
public String exampleMethod(@RequestParam("myArray") String[] array) {
 // 处理数组
 return "viewName";
}

(2)如果请求的路径中有多个参数值,这些参数值通过“/”进行分离,可以使用@PathVariable注解绑定这些参数到数组。

@RequestMapping("/example/{values}")
public String exampleMethod(@PathVariable("values") String[] array) {
 // 处理数组
 return "viewName";
}

4、Json数据

你可以使用 @RequestBody 注解来接收 JSON 类型的请求参数。Spring MVC 将自动将请求的 JSON 数据转换为对象。在控制器方法中,使用@RequestBody注解,并将接收json数据的对象作为方法参数。

@RequestMapping("/example")
public String exampleMethod(@RequestBody MyObject obj) {
 // 处理接收到的 JSON 数据
 return "viewName";
}

当 Spring MVC 接收到请求时,它会自动将请求的 JSON 数据转换为 MyObject 对象,并传递给控制器方法。

如何给客户端响应数据(跳转页面&返回数据)?

(1)可以通过返回视图名称。返回一个视图名称,告诉springmvc渲染对应的视图,然后作为响应发送给客户端。

(2)使用ModelAndAview。创建一个ModelAndView对象,把数据模型添加到MV中,并设置视图名,然后返回对象。springmvc会根据视图名称渲染对应的视图。

(3)如果想要一个json类型或者xml格式的数据,也可以使用@ResponseBody注解。

@RequestBody与@ResponseBody的区别

@RequestBody@ResponseBody 是 Spring MVC 中用于处理请求和响应体的注解,它们有以下区别:

  1. @RequestBody:

    • 作用:@RequestBody 用于将请求体的内容绑定到方法参数上。

    • 使用场景:通常在处理 POST、PUT 等请求方法时,用于接收请求体中的数据,并将其转换为对象或其他类型的参数。

    • 示例:

      @RequestMapping("/example")
      public String exampleMethod(@RequestBody MyObject obj) {
       // 处理接收到的请求体数据
       return "response";
      }
      
  2. @ResponseBody:

    • 作用:@ResponseBody 用于将方法返回值直接作为响应体的内容返回给客户端。

    • 使用场景:通常在返回 JSON、XML 或其他格式的响应时使用,将对象或其他类型的数据转换为响应体的内容。

    • 示例:

      @RequestMapping("/example")
      @ResponseBody
      public MyObject exampleMethod() {
       MyObject obj = new MyObject();
       // 处理数据并设置到 obj
       return obj;
      }
      
    • 注意:在 Spring 4.0 之后,默认情况下,@ResponseBody 注解不再需要显式声明。如果你使用了 Spring 4.0 或更高版本,而且没有自定义的配置,Spring MVC 会自动将方法返回值作为响应体返回给客户端。

综上所述,@RequestBody 主要用于将请求体的内容绑定到方法参数上,而 @ResponseBody 用于将方法返回值直接作为响应体的内容返回给客户端。它们在处理请求和响应体时起到不同的作用,但可以组合使用,实现接收请求体并返回自定义格式的响应。

作者:有点儿意思原文地址:https://www.cnblogs.com/kuangsun125/p/17464392.html

%s 个评论

要回复文章请先登录注册