您的位置:首页 > 移动开发

使用@RequestMapping 定义处理器函数-支持的形参类型

2017-06-12 22:11 225 查看
@RequestMapping 标注的处理器函数的签名可以是任意的,形参可以以任意顺序出现,除BindingResult除外。

支持的形参类型包括:

1. org.springframework.web.context.request.WebRequest  或者 org.springframework.web.context.request.NativeWebRequest 。允许进行一般的请求参数操作,而不必绑定到native servlet API上,如对request/session 属性的操作。

2. Request 或者 response 对象(servlet API)。可以是某些他额定类型的request或者response。例如ServletRequest或者HttpServletRequest或者Spring的MultipartRequest/MultipartHttpServletRequest。

3. HttpSession 类型的session对象。这种类型的参数强制必须有一个与之对应的session出现。因而,这个参数永远都不会是null。

会话操作可能是非线程安全的,尤其在servelt 环境中。如果允许多个请求并发操作同一个会话,那么可以设置RequestMappingHandlerAdapter 的 synchronizeOnSession 的标志位true来实现线程安全。

4. java.servlet.http.PushBuilder  :针对关联的servlet 4.0 push builder API ,允许通过编程的方式实现对HTTP/2资源的push。

5.java.security.Principal  或者 是 Principal 的实现类,包含当前已被认真的用户。

6. org.springframework.http.HttpMethod  :针对HTTP request method,以spring HttpMethod 枚举值的形式出现。

7. java.util.Locale :表示当前request的场所,通常由MVC 环境中的LocaleResolver/LocaleContextResolver 这种特定的场所解析器来决定。

8. java.util.TimeZone 
(Java 6+) / java.time.ZoneId (Java 8+)  :表示当前请求所处的时区,由LocaleContextResolver 决定。

9.java.io.InputStream /java.io.Reader  :用来操作request的内容。该值是由servlet API 暴露的原生InputStream/Reader。

10.java.io.OutputStream /java.io.Writer  :用来产生response的内容。该值是由servlet API 暴露的原生的OutputStream/Writer。

11.@PathVariable 元注解标注的参数,用来操作URI 模板变量

12.@MatrixVariable 元注解标注的参数,用来操作URI 路径段中的称为矩阵变量的name-value 对。

13.@RequestParam  元注解标注的参数,用来操作特定的servlet 请求参数。参数值被转换为所声明的函数参数的类型。

14.@RequestHeader  元注解标注的参数,用来操作特定的servlet 请求的HTTP header。参数值被转换为所声明的函数参数的类型。

15.@RequestBody  元注解标注的参数,用来操作HTTP request 的body。参数值被HttpMessageConverter 转换为所声明的函数参数的类型。

16.@RequestPart 元注解标注的参数,用来操作“mult
4000
ipart/form-data”请求中的内容。

17.@SessionAttribute 元注解标注的参数,用来操作存在的、永久的会话属性,例如用户的认证信息。与之相对的是暂存在会话中,通过@SessionAttributes 标注的作为控制器workflow一部分的模型属性。注意@SessionAttribute 和 @SessionAttributes是两个不同的注解。

18.@RequestAttribute  元注解标注的参数,用来操作request的属性。

19. HttpEntity<?> parameters :用来操作servlet request的HTTP 头和内容。请求的stream将通过HttpMessageConverter 转换为entity body 。

20. java.util.Map /
org.springframework.ui.Model /org.springframework.ui.ModelMap :用来丰富暴露给web 视图的隐式Model的种类。

21.org.springframework.web.servlet.mvc.support.RedirectAttributes :用来指定在重定向场景下的一个确切的属性集合,也可以用来添加flash 属性(flash 属性是指暂存在服务器端,并对重定向之后的请求仍然有用的属性)。

22. Command or form objects:用来通过setter函数或者直接通过field在可自定义的类型转换的支持下,将请求参数绑定到bean 的properties上,依赖于@InitBinder 方法或者HandlerAdapter 的配置。
23. org.springframework.validation.Errors
/org.springframework.validation.BindingResult :表示对前面的command或者form对象的校验结果。

24. org.springframework.web.bind.support.SessionStatus 状态处理器,用来将表单处理标记为已完成,这将触发对由@SessionAttributes元注解所标注的类级别的处理器进行会话属性的清理。

25. org.springframework.web.util.UriComponentsBuilder :一个用来准备相对当前请求的host、port、schema、context path、以及servelt mapping 字面字符路径的URL构建器。

由于函数可能包含多个model对象,而spring将为每个model创建一个BindingResult 实例,因而Errors 和 BindingReslut 参数后必须紧接着model 对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐