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 属性来指示请求体应该映射到哪个参数上。其使用方式和示例代码如下:
-
前端发送 JSON 数据的示例:
{"name": "张三","age": 18,"gender": "男" }
-
定义一个用于接收 JSON 数据的 Java 类,例如:
public class Person {private String name;private int age;private String gender;// getter 和 setter 略 }
-
在控制器中,使用
@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配置方法
- 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 {}
- 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转化对象方法