springmvc 일반 클래스에서 HttpServletRequest 객체 가져오기

spring mvc에서 일반 클래스에서 HttpServletRequest 객체를 가져오려면 다음 2단계가 필요합니다.
1. 웹에서.xml 파일에 다음과 같은 설정을 추가합니다
<listener>
   	<listener-class>org.springframework.web.context.request.RequestContextListener </listener-class>
</listener>

RequestContextListener 클래스에는 다음과 같은 코드가 있습니다. 여기서 빨간색 마크업은 키 코드입니다.
public class RequestContextListener implements ServletRequestListener {
 
...
...
...
 
public void requestInitialized(ServletRequestEvent requestEvent) {
if (!(requestEvent.getServletRequest() instanceof HttpServletRequest)) {
throw new IllegalArgumentException("");
}
HttpServletRequest request = (HttpServletRequest) requestEvent.getServletRequest();
ServletRequestAttributes attributes = new ServletRequestAttributes(request);
request.setAttribute(REQUEST_ATTRIBUTES_ATTRIBUTE, attributes);
LocaleContextHolder.setLocale(request.getLocale());
RequestContextHolder.setRequestAttributes(attributes);
}
...
...
...
}
 
 
public class ServletRequestAttributes extends AbstractRequestAttributes {
 
...
...
...
 
private final HttpServletRequest request;
 
...
...
...
 
/**
 * Create a new ServletRequestAttributes instance for the given request.
 * @param request current HTTP request
 */
public ServletRequestAttributes(HttpServletRequest request) {
Assert.notNull(request, "Request must not be null");
this.request = request;
}
}
2、일반 클래스에서 대상을 획득
HttpServletRequest request =  ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

좋은 웹페이지 즐겨찾기