Spr*_*key 23 spring servlets request
我正在使用Spring注释,我可以HttpRequestContext从Controller传递给服务.
我正在寻找一种静态的方式或任何更好的解决方案而不是RequestContext四处传播.
Abb*_*don 55
如果您使用的是弹簧,则可以执行以下操作:
public static HttpServletRequest getCurrentHttpRequest(){
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest();
return request;
}
logger.debug("Not called in the context of an HTTP request");
return null;
}
Run Code Online (Sandbox Code Playgroud)
Pan*_*hro 22
或者java8方式
public static Optional<HttpServletRequest> getCurrentHttpRequest() {
return Optional.ofNullable(RequestContextHolder.getRequestAttributes())
.filter(ServletRequestAttributes.class::isInstance)
.map(ServletRequestAttributes.class::cast)
.map(ServletRequestAttributes::getRequest);
}
Run Code Online (Sandbox Code Playgroud)
Zaw*_* oo 13
我知道,这已经是答案了。我想标记为新更新。我们可以HttpServletRequest使用 来注入@Autowired。它运行良好springboot。
@Autowired
private HttpServletRequest httpServletRequest;
Run Code Online (Sandbox Code Playgroud)
作为参考,这将是 Kotlin 方式:
val currentRequest: HttpServletRequest?
get() = (RequestContextHolder.getRequestAttributes() as? ServletRequestAttributes)?.request
Run Code Online (Sandbox Code Playgroud)