对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

方法参数

下表描述了支持的控制器方法参数。不支持任何参数的响应式类型。spring-doc.cadn.net.cn

JDK 8 的 java.util.Optional 作为方法参数与具有 required 属性的注解(例如,@RequestParam@RequestHeader 等)结合使用,并等价于 required=falsespring-doc.cadn.net.cn

控制器方法参数 描述

WebRequest, NativeWebRequestspring-doc.cadn.net.cn

通用访问请求参数和请求及会话属性,无需直接使用Servlet API。spring-doc.cadn.net.cn

jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponsespring-doc.cadn.net.cn

选择任何特定的请求或响应类型——例如,ServletRequest, HttpServletRequest, 或者Spring的MultipartRequest, MultipartHttpServletRequestspring-doc.cadn.net.cn

jakarta.servlet.http.HttpSessionspring-doc.cadn.net.cn

强制存在会话。因此,此类参数永远不会是null。 请注意,会话访问不是线程安全的。如果允许多个请求并发访问会话,请考虑将RequestMappingHandlerAdapter实例的synchronizeOnSession标志设置为truespring-doc.cadn.net.cn

jakarta.servlet.http.PushBuilderspring-doc.cadn.net.cn

Servlet 4.0 推送构建器 API 用于编程式 HTTP/2 资源推送。 请注意,根据 Servlet 规范,注入的 PushBuilder 实例可能为 null,如果客户端不支持该 HTTP/2 功能。spring-doc.cadn.net.cn

java.security.Principalspring-doc.cadn.net.cn

当前已认证的用户——如果已知,可能是特定的Principal实现类。spring-doc.cadn.net.cn

请注意,如果此参数被注解以允许自定义解析器在通过HttpServletRequest#getUserPrincipal进行默认解析之前对其进行解析,则不会立即解析该参数。 例如,Spring Security Authentication 实现了 Principal,并通过 HttpServletRequest#getUserPrincipal 被注入,除非它也被注解为 @AuthenticationPrincipal,在这种情况下,它会通过 Spring Security 的自定义解析器通过 Authentication#getPrincipal 进行解析。spring-doc.cadn.net.cn

HttpMethodspring-doc.cadn.net.cn

请求的HTTP方法。spring-doc.cadn.net.cn

java.util.Localespring-doc.cadn.net.cn

当前请求的本地化设置,由最具体的LocaleResolver确定(实际上,是配置的LocaleResolverLocaleContextResolver)。spring-doc.cadn.net.cn

java.util.TimeZone + java.time.ZoneIdspring-doc.cadn.net.cn

与当前请求相关联的时区,由LocaleContextResolver确定。spring-doc.cadn.net.cn

java.io.InputStream, java.io.Readerspring-doc.cadn.net.cn

要访问由Servlet API暴露的原始请求正文。spring-doc.cadn.net.cn

java.io.OutputStream, java.io.Writerspring-doc.cadn.net.cn

获取由Servlet API暴露的原始响应体。spring-doc.cadn.net.cn

@PathVariablespring-doc.cadn.net.cn

访问URI模板变量。请参见URI模式spring-doc.cadn.net.cn

@MatrixVariablespring-doc.cadn.net.cn

用于访问URI路径段中的名称值对。请参见矩阵变量spring-doc.cadn.net.cn

@RequestParamspring-doc.cadn.net.cn

对于访问Servlet请求参数,包括多部分文件。参数值将转换为声明的方法参数类型。请参见 @RequestParam 以及 多部分spring-doc.cadn.net.cn

注意,对于简单的参数值,使用 @RequestParam 是可选的。 请参见本表末尾的“任何其他参数”。spring-doc.cadn.net.cn

@RequestHeaderspring-doc.cadn.net.cn

用于访问请求头。头值将转换为声明的方法参数类型。请参见 @RequestHeaderspring-doc.cadn.net.cn

@CookieValuespring-doc.cadn.net.cn

用于访问cookie。Cookie值将转换为声明的方法参数类型。请参见@CookieValuespring-doc.cadn.net.cn

@RequestBodyspring-doc.cadn.net.cn

对于访问HTTP请求正文。正文内容通过使用HttpMessageConverter实现转换为声明的方法参数类型。请参见@RequestBodyspring-doc.cadn.net.cn

HttpEntity<B>spring-doc.cadn.net.cn

访问请求头和正文。正文通过HttpMessageConverter进行转换。 参见HttpEntityspring-doc.cadn.net.cn

@RequestPartspring-doc.cadn.net.cn

对于在 multipart/form-data 请求中访问某个部分,使用 HttpMessageConverter 转换该部分的主体。请参见 Multipartspring-doc.cadn.net.cn

java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMapspring-doc.cadn.net.cn

用于访问在HTML控制器中使用的模型,并作为视图渲染的一部分暴露给模板。spring-doc.cadn.net.cn

RedirectAttributesspring-doc.cadn.net.cn

指定重定向时要使用的属性(即,附加到查询字符串的属性)以及临时存储直到重定向后请求的闪存属性。请参见重定向属性闪存属性spring-doc.cadn.net.cn

@ModelAttributespring-doc.cadn.net.cn

对于访问模型中现有属性(如果不存在则实例化)并应用数据绑定和验证。请参见 @ModelAttribute 以及 ModelDataBinderspring-doc.cadn.net.cn

注意 @ModelAttribute 的使用是可选的(例如,设置其属性)。 请参见本表末尾的“任何其他参数”。spring-doc.cadn.net.cn

Errors, BindingResultspring-doc.cadn.net.cn

对于访问验证和数据绑定错误的命令对象 (即,一个 @ModelAttribute 参数)或验证 @RequestBody@RequestPart 参数的错误。您必须声明一个 Errors,或 BindingResult 参数 在经过验证的方法参数之后立即声明。spring-doc.cadn.net.cn

SessionStatus + 类级别的 @SessionAttributesspring-doc.cadn.net.cn

用于标记表单处理完成,这将触发通过类级别@SessionAttributes注解声明的会话属性的清理。 有关更多详细信息,请参见@SessionAttributesspring-doc.cadn.net.cn

UriComponentsBuilderspring-doc.cadn.net.cn

用于根据当前请求的主机、端口、协议、上下文路径以及servlet映射的字面部分准备一个相对URL。请参见URI链接spring-doc.cadn.net.cn

@SessionAttributespring-doc.cadn.net.cn

对于访问任何会话属性,与作为类级别@SessionAttributes声明的结果存储在会话中的模型属性不同。请参见 @SessionAttribute以获取更多详细信息。spring-doc.cadn.net.cn

@RequestAttributespring-doc.cadn.net.cn

用于访问请求属性。有关更多详细信息,请参见 @RequestAttributespring-doc.cadn.net.cn

任何其他参数spring-doc.cadn.net.cn

如果方法参数未与该表中的任何先前值匹配,并且它是一个简单类型(由 BeanUtils#isSimpleProperty)确定, 则将其解析为 @RequestParam。否则,将其解析为 @ModelAttributespring-doc.cadn.net.cn