18.2 编写请求处理方法
每个请求处理方法可以有多个不同类型的参数,以及一个多种类型的返回结果。例如,如果在请求处理方法中需要访问HttpSession
对象,则可以使用HttpSession
作为方法的参数,Spring
会将HttpSession
对象正确地传递给方法:
1 | "/uri") ( |
或者,若需要访问客户端语言环境和HttpServletRequest
对象,则可以在方法签名上包括这样的参数:
1 | "/uri") ( |
允许作为请求处理方法的参数的类型
下面是可以在请求处理方法中出现的参数类型:
javax.servlet.ServletRequest
或javax.servlet.http.HttpServletRequest
javax.servlet.ServletResponse
或javax.servlet.http.HttpServletResponse
javax.servlet.http.HttpSession
org.springframework.web.context.request.WebRequest
或org.springframework.web.context.request.NativeWebRequest
java.util.Locale
java.io.InputStream
或java.io.Reader
java.io.OutputStream
或java.io.Writer
java.security.Principal
HttpEntity<?>
java.util.Map/
org.springframework.ui.Model/
org.springframework.ui.ModelMap
org.springframework.web.servlet.mvc.support.RedirectAttrib
org.springframework.validation.Errors/
org.springframework.validation.BindingResult
以及命令或表单对象:
org.springframework.web.bind.support.SessionStatus
org.springframework.web.util.UriComponentsBuilder
- 带
@PathVariable
,@MatrixVariable
注释的对象 @RequestParam
,@RequestHeader
,@RequestBody
或@RequestPart
特别重要的是org.springframework.ui.Model
类型。这不是一个Servlet API
类型,而是一个包含Map
的Spring MVC
类型。每次调用请求处理方法时,Spring MVC
都创建Model
对象并将各种对象注入到Map
中。
请求处理方法可以返回的类型
请求处理方法可以返回如下类型的对象:
ModelAndView
Model
Map
包含模型的属性View
- 代表逻辑视图名的
String
void
- 提供对
Servlet
的访问,以响应HTTP
头部和内容HttpEntity
或ResponseEntity
对象 Callable
DeferredResult
- 其他任意类型,
Spring
将其视作输出给View
的对象模型
本章后续会展示一个例子,进一步学习如何开发一个请求处理方法。
原文链接: 18.2 编写请求处理方法