Spring hiển thị HttpServletRequest
đối tượng hiện tại (cũng như HttpSession
đối tượng hiện tại ) thông qua một đối tượng wrapper kiểu ServletRequestAttributes
. Đối tượng trình bao bọc này được liên kết với ThreadLocal và được lấy bằng cách gọi static
phương thức RequestContextHolder.currentRequestAttributes()
.
ServletRequestAttributes
cung cấp phương thức getRequest()
để lấy yêu cầu hiện tại, getSession()
để lấy phiên hiện tại và các phương thức khác để lấy các thuộc tính được lưu trữ trong cả hai phạm vi. Đoạn mã sau, mặc dù hơi xấu, nhưng sẽ giúp bạn có được đối tượng yêu cầu hiện tại ở bất kỳ đâu trong ứng dụng:
HttpServletRequest curRequest =
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest();
Lưu ý rằng RequestContextHolder.currentRequestAttributes()
phương thức trả về một giao diện và cần phải được đánh máy để ServletRequestAttributes
thực thi giao diện đó.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes