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 staticphương thức RequestContextHolder.currentRequestAttributes().
ServletRequestAttributescung 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 để ServletRequestAttributesthực thi giao diện đó.
Spring Javadoc: RequestContextHolder | ServletRequestAttributes