반응형
봄에 현재 HttpServletRequest를 가져오는 정적인 방법이 있습니까?
Spring 주석을 사용하고 있습니다. 다음을 통과할 수 있습니다.HttpRequestContext
컨트롤러에서 서비스로 이동합니다.
저는 정적인 방법이나 합격보다 더 나은 해결책을 찾고 있습니다.RequestContext
주위에.
스프링을 사용하는 경우 다음 작업을 수행할 수 있습니다.
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;
}
아니면 java8 방식.
public static Optional<HttpServletRequest> getCurrentHttpRequest() {
return Optional.ofNullable(RequestContextHolder.getRequestAttributes())
.filter(ServletRequestAttributes.class::isInstance)
.map(ServletRequestAttributes.class::cast)
.map(ServletRequestAttributes::getRequest);
}
알아요, 그것은 이미 답입니다.새로운 업데이트로 표시하고 싶습니다.주사를 놓을 수 있습니다.HttpServletRequest
을 이용하여@Autowired
에서 정상적으로 작동합니다.springboot
.
@Autowired
private HttpServletRequest httpServletRequest;
참고로 코틀린 방법은 다음과 같습니다.
val currentRequest: HttpServletRequest?
get() = (RequestContextHolder.getRequestAttributes() as? ServletRequestAttributes)?.request
"또는 Java 8 way" 위의 @andreback 의견에 대응하여, 방법은ServletRequestAttributes.class
public static Optional<HttpServletRequest> getCurrentHttpRequest() {
return
Optional.ofNullable(
RequestContextHolder.getRequestAttributes()
)
.filter(ServletRequestAttributes.class::isInstance)
.map(ServletRequestAttributes.class::cast)
.map(ServletRequestAttributes::getRequest);
}
추가할 수 있습니다.HttpServletRequest
컨트롤러 핸들러 메서드의 매개 변수로 사용할 수 없습니다.다음과 같이:
@GetMapping("/hello")
public String hello(HttpServletRequest request) {
//...
return "Hello world!";
}
지원되는 컨트롤러 메서드 인수 및 반환 유형 목록은 https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-methods 에서 확인할 수 있습니다.
이것이 제게 맞는 일입니다.
HttpServletRequest request =
((ServletRequestAttributes) Objects.requireNonNull(
RequestContextHolder.getRequestAttributes()))
.getRequest();
언급URL : https://stackoverflow.com/questions/592123/is-there-a-static-way-to-get-the-current-httpservletrequest-in-spring
반응형
'programing' 카테고리의 다른 글
Powershell v3.0 파이프 문제 (0) | 2023.07.26 |
---|---|
Spring 응용 프로그램의 유틸리티 클래스 - 정적 방법을 사용해야 합니까? (0) | 2023.07.26 |
도커가 도커 파일을 빌드할 때 실행 npm 설치 명령을 캐시하는 방법 (0) | 2023.07.26 |
jQuery '.is(":visible")'가 Chrome에서 작동하지 않음 (0) | 2023.07.26 |
중간 복사본 없이 표준 C에서 memmove를 구현하는 방법은 무엇입니까? (0) | 2023.07.26 |