WebRequest, NativeWebRequest
|
通用地访问请求参数、请求和会话属性,无需直接使用 Servlet API。 |
jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse
|
选择任何特定的请求或响应类型——例如,ServletRequest, HttpServletRequest, 或者 Spring 的 MultipartRequest, MultipartHttpServletRequest。 |
jakarta.servlet.http.HttpSession
|
强制会话的存在。因此,这样的参数永远不会是 null。请注意,会话访问不是线程安全的。如果允许多个请求并发访问会话,请考虑将 RequestMappingHandlerAdapter 实例的 synchronizeOnSession 标志设置为 true。 |
jakarta.servlet.http.PushBuilder
|
用于程序化 HTTP/2 资源推送的 Servlet 4.0 推送构建器 API。请注意,此 API 已在 Servlet 6.1 中弃用。 |
java.security.Principal
|
当前已认证的用户——如果已知,可能是特定的 Principal 实现类。
请注意,如果此参数被注解以允许自定义解析器在回退到通过 HttpServletRequest#getUserPrincipal 进行默认解析之前解析它,则不会急切解析此参数。例如,Spring Security 的 Authentication 实现了 Principal,并会通过 HttpServletRequest#getUserPrincipal 注入,除非它也使用 @AuthenticationPrincipal 进行注解,在这种情况下,它会通过 Authentication#getPrincipal 由自定义 Spring Security 解析器解析。 |
HttpMethod
|
请求的 HTTP 方法。 |
java.util.Locale
|
当前请求的区域设置,由可用的最具体的 LocaleResolver 确定(实际上是已配置的 LocaleResolver 或 LocaleContextResolver)。 |
java.util.TimeZone + java.time.ZoneId
|
与当前请求关联的时区,由 LocaleContextResolver 确定。 |
java.io.InputStream, java.io.Reader
|
用于访问由 Servlet API 公开的原始请求体。 |
java.io.OutputStream, java.io.Writer
|
用于访问由 Servlet API 公开的原始响应体。 |
@PathVariable
|
用于访问 URI 模板变量。请参阅 URI 模式。 |
@MatrixVariable
|
用于访问 URI 路径段中的名称-值对。请参阅 矩阵变量。 |
@RequestParam
|
用于访问 Servlet 请求参数,包括多部分文件。参数值被转换为声明的方法参数类型。请参阅 @RequestParam 以及 多部分。
请注意,对于简单的参数值,@RequestParam 的使用是可选的。请参阅本表末尾的“任何其他参数”。 |
@RequestHeader
|
用于访问请求头。头值被转换为声明的方法参数类型。请参阅 @RequestHeader。 |
@CookieValue
|
用于访问 cookie。Cookie 值被转换为声明的方法参数类型。请参阅 @CookieValue。 |
@RequestBody
|
用于访问 HTTP 请求体。请求体内容通过使用 HttpMessageConverter 实现转换为声明的方法参数类型。请参阅 @RequestBody。 |
HttpEntity<B>
|
用于访问请求头和请求体。请求体通过 HttpMessageConverter 进行转换。请参阅 HttpEntity。 |
@RequestPart
|
用于访问 multipart/form-data 请求中的某个部分,并通过 HttpMessageConverter 转换该部分的请求体。请参阅 多部分。 |
java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMap
|
用于访问在 HTML 控制器中使用的模型,并作为视图渲染的一部分暴露给模板。 |
RedirectAttributes
|
指定在重定向情况下使用的属性(即,附加到查询字符串)和临时存储的闪存属性,直到重定向后的请求。请参阅 重定向属性 和 闪存属性。 |
@ModelAttribute
|
用于访问模型中现有属性(如果不存在则实例化),并应用数据绑定和验证。请参阅 @ModelAttribute 以及 模型 和 DataBinder。
请注意,@ModelAttribute 的使用是可选的(例如,用于设置其属性)。请参阅本表末尾的“任何其他参数”。 |
Errors, BindingResult
|
用于访问命令对象(即,@ModelAttribute 参数)的验证和数据绑定错误,或者 @RequestBody 或 @RequestPart 参数的验证错误。您必须在已验证的方法参数之后立即声明一个 Errors 或 BindingResult 参数。 |
SessionStatus + 类级别 @SessionAttributes
|
用于标记表单处理完成,这会触发清理通过类级别 @SessionAttributes 注解声明的会话属性。请参阅 @SessionAttributes 获取更多详细信息。 |
UriComponentsBuilder
|
用于准备一个相对于当前请求的主机、端口、方案、上下文路径和 Servlet 映射的字面部分的 URL。请参阅 URI 链接。 |
@SessionAttribute
|
用于访问任何会话属性,与因类级别 @SessionAttributes 声明而存储在会话中的模型属性不同。请参阅 @SessionAttribute 以获取更多详细信息。 |
@RequestAttribute
|
用于访问请求属性。请参阅 @RequestAttribute 以获取更多详细信息。 |
任何其他参数 |
如果方法参数与此表中的任何先前值不匹配,并且它是一个简单类型(由 BeanUtils#isSimpleProperty 确定),则将其解析为 @RequestParam。否则,将其解析为 @ModelAttribute。 |