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, ...) {
...
}
添加回答
舉報