本文共 1045 字,大约阅读时间需要 3 分钟。
在 Spring MVC 中,使用注解 @RequestMapping
修饰控制器时,其所配置的内容,会在工程的启动阶段保存到处理器映射(HandlerMapping)机制中,当请求连接被拦截后,HandlerMapping
进行匹配,会将对应的处理器和拦截器保存到 HandlerExecutionChain
对象中,并返回给 DispatcherServlet
运行。
处理器中包含了控制器,在执行控制器中匹配的方法前,需要先将请求报文中的参数转换为控制器所需要的参数。
不使用任何注解,控制器的参数名称需要和请求链接中的参数名称保持一致,如此参数可以正常传递,并且控制器的参数默认是可以为空的,所以请求链接中的参数可以是缺省的。
当前后端的参数名称不一致时,可以使用 @RequestParam
注解将两者映射起来,并且默认参数是非空的,但是可以使用注解中的 required
属性修改参数的必要性。
如果控制器的参数是数组,那么请求链接中的相应参数中的元素可以直接使用逗号分隔,如 http://127.0.0.1/testArray?value=1,2,3
。
使用 @RequestBody
注解修饰控制器的参数,从而可以获取请求报文体中的 JSON 参数。
使用 @PathVariable
注解获取请求链接路径中的参数,这个需要修饰控制器方法的注解使用 {<参数名称>}
占位符表明参数的位置和名称。
对于日期和数字,可以使用 @DateTimeFormat
和 @NumberFormat
进行修饰,从而指定控制器参数的格式。
如果需要,可以自定义参数转换规则。
如同使用 @RequestBody
修饰了参数的控制器,处理器会调用 HttpMessageConverter
接口中声明的方法对请求体信息进行转换。
Spring MVC 中声明了三个接口来实现各种参数的转换,分别如下:
在 Spring Boot 中,自动配置类 WebMvcAutoConfiguration
中的 WebMvcAutoConfigurationAdapter
内部类,会自动将上面三种类型的 Bean 注册到服务类中。所以,只要实现上面的几个接口,就可以自定义自己的参数转换器。
转载地址:http://ztdws.baihongyu.com/