3 回答

TA贡献1798条经验 获得超7个赞
Spring 通过type 的包装器对象公开当前HttpServletRequest对象(以及当前HttpSession对象)。此包装器对象绑定到ThreadLocal,可以通过调用方法获得。ServletRequestAttributesstaticRequestContextHolder.currentRequestAttributes()
ServletRequestAttributes提供getRequest()获取当前请求,getSession()获取当前会话的方法以及获取存储在两个范围中的属性的其他方法。以下代码虽然有点难看,但应该可以在应用程序中的任何位置为您提供当前的请求对象:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
请注意,该RequestContextHolder.currentRequestAttributes()方法返回一个接口,并且需要将其类型转换为ServletRequestAttributes实现该接口的类型。
春季Javadoc: RequestContextHolder | ServletRequestAttributes

TA贡献1827条经验 获得超4个赞
如此处建议的那样,您还可以将HttpServletRequestas作为方法参数注入,例如:
public MyResponseObject myApiMethod(HttpServletRequest request, ...) {
...
}
添加回答
举报