Spring MVC 路径参数及JSON参数接收

1. 路径参数接收

路径传递参数是一种在 URL 路径中传递参数的方式。在 RESTful 的 Web 应用程序中,经常使用路径传递参数来表示资源的唯一标识符或更复杂的表示方式。而 Spring MVC 框架提供了 @PathVariable 注解来处理路径传递参数。

@PathVariable 注解允许将 URL 中的占位符映射到控制器方法中的参数。

例如,如果我们想将 /user/{id} 路径下的 {id} 映射到控制器方法的一个参数中,则可以使用 @PathVariable 注解来实现。

下面是一个使用 @PathVariable 注解处理路径传递参数的示例:

 /**
 * 动态路径设计: /user/{动态部分}/{动态部分}   动态部分使用{}包含即可! {}内部动态标识!
 * 形参列表取值: @PathVariable Long id  如果形参名 = {动态标识} 自动赋值!
 *              @PathVariable("动态标识") Long id  如果形参名 != {动态标识} 可以通过指定动态标识赋值!
 *
 * 访问测试:  /param/user/1/root  -> id = 1  uname = root
 */
@GetMapping("/user/{id}/{name}")
@ResponseBody
public String getUser(@PathVariable Long id, 
                      @PathVariable("name") String uname) {
    System.out.println("id = " + id + ", uname = " + uname);
    return "user_detail";
}

注意:

  • 如果@PathVariable中没有指定value,那么形参名要与动态路径中的动态标识相同。
  • 如果形参名与动态路径中的动态标识不相同,那么就需要在@PathVariable中指定与动态标识相同的value值。

2. json参数接收

前端传递 JSON 数据时,Spring MVC 框架可以使用 @RequestBody 注解来将 JSON 数据转换为 Java 对象。@RequestBody 注解表示当前方法参数的值应该从请求体中获取,并且需要指定 value 属性来指示请求体应该映射到哪个参数上。其使用方式和示例代码如下:

  1. 前端发送 JSON 数据的示例:

    {
      "name": "张三",
      "age": 18,
      "gender": "男"
    }
    
  2. 定义一个用于接收 JSON 数据的 Java 类,例如:

    public class Person {
      private String name;
      private int age;
      private String gender;
      // getter 和 setter 略
    }
    
  3. 在控制器中,使用 @RequestBody 注解来接收 JSON 数据,并将其转换为 Java 对象,例如:

    @PostMapping("/person")
    @ResponseBody
    public String addPerson(@RequestBody Person person) {
    
      // 在这里可以使用 person 对象来操作 JSON 数据中包含的属性
      return "success";
    }
    

    在上述代码中,@RequestBody 注解将请求体中的 JSON 数据映射到 Person 类型的 person 参数上,并将其作为一个对象来传递给 addPerson() 方法进行处理。

    注意:

    • Java本身不支持json数据类型处理
    • 如果需要在Java中处理json数据,那就需要配置json类型处理的工具(jackson)

3 jackson配置方法

  1. springmvc handlerAdpater配置json转化器,配置类需要明确:
  //TODO: SpringMVC对应组件的配置类 [声明SpringMVC需要的组件信息]
  
  //TODO: 导入handlerMapping和handlerAdapter的三种方式
   //1.自动导入handlerMapping和handlerAdapter [推荐]
   //2.可以不添加,springmvc会检查是否配置handlerMapping和handlerAdapter,没有配置默认加载
   //3.使用@Bean方式配置handlerMapper和handlerAdapter
  @EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
  @Configuration
  @ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描
  
  //WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
  public class SpringMvcConfig implements WebMvcConfigurer {
  }
  1. pom.xml 加入jackson依赖
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.0</version>
    </dependency>

@EnableWebMvc可以帮助我们完成三件事:

  • 将handlerMapping加入到ioc容器
  • 将handlerAdapter加入到ioc容器
  • 添加jackson转化器以及jackson转化对象方法
  • 33
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值