3.2.2 请求处理方法中可出现的参数类型
每个请求处理方法
可以有多个不同类型的参数。
如果需要访问HttpServletRequest
对象,则可以添加HttpServletRequest
作为参数, Spring
会将对象正确地传递给方法:
1 | "/login") (value= |
如果需要访问HttpSession
对象,则可以添加HttpSession
作为参数, Spring
会将对象正确地传递给方法:
请求处理方法中可以出现的类型
下面是可以在请求处理方法中出现的参数类型:
javax.servlet包下可以作为在请求处理方法参数的类
javax.servlet.ServletRequest
或javax.servlet.http.HttpServletRequest
javax.servlet.ServletResponse
或javax.servlet.http.HttpServletResponse
javax.servlet.http.HttpSession
java.io包下可以作为在请求处理方法参数的类
java.io.InputStream
或java.io.Reader
-java.io.OutputStream
或java.io.Writer
java.util包下可以作为在请求处理方法参数的类
java.util.Locale
java.util.Map
java.security包下可以作为在请求处理方法参数的类
java.security.PrincipalHttpEntity<?>
org.springframework.web包中可以作为在请求处理方法参数的类
org.springframework.web.context.request.WebRequest
或org.springframework.web.context.request.NativeWebRequest
org.springframework.web.bind.support.SessionStatus
org.springframework.web.util.UriComponentsBuilder
org.springframework.web.servlet.mvc.support.RedirectAttributes
这里重点说明一下org.springframework.web.context.request.WebRequest
这个对象。 WebRequest
是Spring MVC
提供的统一请求访问接口,
WebRequest
可以访问请求相关数据,如参数数据、WebRequest
可以访问请求头数据,WebRequest
可以访问请求作用域的数据WebRequest
可以访问会话作用域中的数据
但是WebRequest
无法访问Cookie
区数据,
NativeWebRequest
继承了WebRequest
,并提供访问本地Servlet API
的方法。
WebRequest中有如下这些重点方法:
方法 | 描述 |
---|---|
getParameter(String name) |
根据请求参数名获取请求参数值。等同于Servlet API 的request.getParameter(String name) 。 |
getHeader(String name) |
根据请求头参数名获取请求头参数值,等同于ServletAPI 的request.getHeader(String name) |
setAttribute(String name,Object value,int scope) |
保存数据到指定的作用域 |
getAttribute(String name,int scope) |
从指定的作用域中提取数据 |
其中 | |
- setAttribute 方法等同于Servlet API 的scope(request,session).setAttribute(String name,Object value) 方法。参数中的int scope 是WebRequest 对象中定义的两个常量SCOPE_REQUEST (请求作用域)、SCOPE_SESSION (会话作用域) |
|
- getAttribute 方法等同于Servlet API 的scope(request,session).getAttribute(String name) 方法。 |
从框架的无侵入性来说,建议使用WebRequest
对象替代Servlet API
的HttpServletRequest
对象和HttpSession
对象。
org.springframework.ui包中可以作为在请求处理方法参数的类
org.springframework.ui.Model
org.springframework.ui.ModelMap
org.springframework.ui.Model
是其中最重要的类型。这不是一个Servlet API
类型,而是一个Spring MVC
类型,其中包含了Map
对象用来存储数据。如果方法中添加了Model
参数,则每次调用请求处理方法时, Spring MVC
都会创建Model
对象,并将其作为参数传递给方法。
org.springframework.validation包中可以作为在请求处理方法参数的类
org.springframework.validation.Errors
org.springframework.validation.BindingResult
可以出现在请求处理方法参数列表中的注解
@PathVariable
注解、@MatrixVariable
注解、@RequestParam
注解、@RequestHeader
注解、@RequestBody
注解、@RequestPart
注解
原文链接: 3.2.2 请求处理方法中可出现的参数类型