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

1. 路径参数接收

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

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

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

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

java 复制代码
 /**
 * 动态路径设计: /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 数据的示例:

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

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

    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转化器,配置类需要明确:
java 复制代码
  //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依赖
xml 复制代码
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.0</version>
    </dependency>

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

  • 将handlerMapping加入到ioc容器
  • 将handlerAdapter加入到ioc容器
  • 添加jackson转化器以及jackson转化对象方法
相关推荐
编程、小哥哥5 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
Json_181790144808 小时前
商品详情接口使用方法和对接流程如下
大数据·json
wxin_VXbishe10 小时前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
OEC小胖胖10 小时前
Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)
java·spring boot·后端·spring·mybatis·web
落落落sss11 小时前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
潘多编程19 小时前
Java中的状态机实现:使用Spring State Machine管理复杂状态流转
java·开发语言·spring
_阿伟_19 小时前
SpringMVC
java·spring
杨半仙儿还未成仙儿1 天前
Spring框架:Spring Core、Spring AOP、Spring MVC、Spring Boot、Spring Cloud等组件的基本原理及使用
spring boot·spring·mvc
攸攸太上1 天前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
ZhongruiRao1 天前
Springboot+PostgreSQL+MybatisPlus存储JSON或List、数组(Array)数据
spring boot·postgresql·json