#30天专注成长计划# day20 @RequestMapping 方法所支持的参数类型和返回类型

Spring MVC@RequestMapping 方法所支持的参数类型和返回类型

@RequestMapping方法方法所支持的常见参数类型:

1、请求或响应对象(Servlet API)。可以是任何具体的请求或响应类型的对象,比如,ServletRequest或HttpServletRequest对象。

2、HttpSession类型的会话对象(Servlet API)。使用该类型的参数将要求这样一个session的存在,因此这样的参数永不为null。

3、当前请求的地区信息java.util.Locale,由已配置的最相关的地区解析器解析得到。

4、java.util.TimeZone(java 6以上的版本)/java.time.ZoneId(java 8),由LocaleContextResolver解析得到

5、org.springframework.http.HttpMethod。可以拿到HTTP请求方法

包装了当前被认证用户信息的

java.security.Principal

6、带@PathVariable标注的方法参数,其存放了URI模板变量中的值。

7、带@RequestParam标注的方法参数,其存放了Servlet请求中所指定的参数。参数的值会被转换成方法参数所声明的类型。

8、带@RequestHeader标注的方法参数,其存放了Servlet请求中所指定的HTTP请求头的值。参数的值会被转换成方法参数所声明的类型。

9、带@RequestBody标注的参数,提供了对HTTP请求体的存取。参数的值通过HttpMessageConverter被转换成方法参数所声明的类型。

10、带@RequestPart标注的参数,提供了对一个"multipart/form-data请求块(request part)内容的存取。

11、HttpEntity类型的参数,其提供了对HTTP请求头和请求内容的存取。请求流是通过HttpMessageConverter被转换成entity对象的。

12、java.util.Map/org.springframework.io.Model/org.springframework.ui.ModelMap类型的参数,用以增强默认暴露给视图层的模型(model)的功能

13、org.springframework.web.servlet.mvc.support.RedirectAttributes类型的参数,用以指定重定向下要使用到的属性集以及添加flash属性

14、命令或表单对象,它们用于将请求参数直接绑定到bean字段(可能是通过setter方法)。你可以通过@InitBinder标注和/或HanderAdapter的配置来定制这个过程的类型转换。

15、RequestMappingHandlerAdapter类webBindingInitializer属性的文档。这样的命令对象,以及其上的验证结果,默认会被添加到模型model

16、org.springframework.validation.Errors / org.springframework.validation.BindingResult验证结果对象,用于存储前面的命令或表单对象的验证结果(紧接其前的第一个方法参数)。

17、org.springframework.web.bind.support.SessionStatus对象,用以标记当前的表单处理已结束。这将触发一些清理操作:@SessionAttributes在类级别标注的属性将被移除

18、org.springframework.web.util.UriComponentsBuilder构造器对象,用于构造当前请求URL相关的信息,比如主机名、端口号、资源类型(scheme)、上下文路径、servlet映射中的相对部分(literal part)等

@RequestMapping方法方法支持的常见返回类型:

1、ModelAndView对象,其中model隐含填充了命令对象,以及标注了@ModelAttribute字段的存取器被调用所返回的值。

2、Model对象,其中视图名称默认由RequestToViewNameTranslator决定,model隐含填充了命令对象以及标注了@ModelAttribute字段的存取器被调用所返回的值

3、Map对象,用于暴露model,其中视图名称默认由RequestToViewNameTranslator决定,model隐含填充了命令对象以及标注了@ModelAttribute字段的存取器被调用所返回的值

4、View对象。其中model隐含填充了命令对象,以及标注了@ModelAttribute字段的存取器被调用所返回的值。handler方法也可以增加一个Model类型的方法参数来增强model

5、String对象,其值会被解析成一个逻辑视图名。其中,model将默认填充了命令对象以及标注了@ModelAttribute字段的存取器被调用所返回的值。handler方法也可以增加一个Model类型的方法参数来增强model

6、void。如果处理器方法中已经对response响应数据进行了处理(比如在方法参数中定义一个ServletResponse或HttpServletResponse类型的参数并直接向其响应体中写东西),那么方法可以返回void。handler方法也可以增加一个Model类型的方法参数来增强model

如果处理器方法标注了ResponseBody,那么返回类型将被写到HTTP的响应体中,而返回值会被HttpMessageConverters转换成所方法声明的参数类型。

7、HttpEntity或ResponseEntity对象,用于提供对Servlet HTTP响应头和响应内容的存取。对象体会被HttpMessageConverters转换成响应流。

HttpHeaders对象,返回一个不含响应体的response

如果返回类型不是Spring MVC默认识别的类型,则会被处理成model的一个属性并返回给视图,该属性的名称为方法级的@ModelAttribute所标注的字段名(或者以返回类型的类名作为默认的属性名)。model隐含填充了命令对象以及标注了@ModelAttribute字段的存取器被调用所返回的值


#30天专注成长计划# day20 @RequestMapping 方法所支持的参数类型和返回类型_第1张图片
图片发自App

你可能感兴趣的:(#30天专注成长计划# day20 @RequestMapping 方法所支持的参数类型和返回类型)