使用@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 对象。
支持的形参类型包括:
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 对象。
相关文章推荐
- 使用@RequestMapping 定义处理器函数-支持的函数返回类型
- 使用@RequestMapping 定义处理器函数-通过@RequestParam元注解来将请求参数绑定到方法形参
- 函数的类型,函数的声明,函数的定义,函数的调用,函数嵌套,函数递归,形参实参
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- typedef函数指针与函数类型的定义及使用方式
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- Oracle不支持在select语句中调用自定义函数时使用自定义类型作参数?
- C语言学习6 :指针的定义,指针类型要合法,指针要初始化,指针做函数参数,数组和指针的通用性,指针+1所代表的空间,void * 指针,交换函数中的指针,数组和字符型指针区别,字符型指针的应用,使用指针完成字符操作函数
- C++学习14:使用typedef定义函数指针类型
- DLL函数定义和函数实现写函数类型的不同, 引起不能使用Dll中的函数
- golang函数——可以为类型(包括内置数据类型)定义函数,类似类方法,同时支持多返回值
- typedef函数指针与函数类型的定义及使用方式
- 使用typedef语句定义函数类型和函数指针
- python 函数定义和内置函数isinstance以及数据类型检查type的使用
- 获取 XMLDocument对象 和 XMLHttpRequest 对象的函数定义
- 成员函数指针和其他类型的强制转换,使用一般指针调用成员函数
- wince 中使用HttpSendRequest函数POST数据时应该注意的一点
- BAPI--使用HR_INFOTYPE_OPERATION函数批量导入HR信息纪录代码样例(0759信息类型)
- 如何在一个类中定义一个Friend类型的成员函数
- BAPI--使用HR_INFOTYPE_OPERATION函数批量导入HR信息纪录代码样例(0759信息类型)