복붙노트

[SPRING] POJO 클래스에서 Servlet Request 객체 가져 오기

SPRING

POJO 클래스에서 Servlet Request 객체 가져 오기

Acegi 클래스에서 호출되고있는 POJO에서 현재 페이지 URL을 가져와야합니다 (작업중인 앱에 대한 사용자 정의 논리를 추가해야 함) HttpServletRequest를 검색하여 하위 도메인을 가져올 수 있어야합니다. URL (논리가 기초한).

내가 추가하려고 :

@Autowired
private HttpServletRequest request;

...

public void setRequest(HttpServletRequest request) {
    this.request = request;
}

public HttpServletRequest getRequest() {
    return request;
}

그러나 내 코드에서 요청 개체를 사용하려고하면 null입니다.

어떤 생각을 잘못하고 있는지, 어떻게하면 더 잘 할 수 있을까요?

해결법

  1. ==============================

    1.bean의 범위가 요청 범위라면 HttpServletRequest를 autowire 할 수 있습니다.

    bean의 범위가 요청 범위라면 HttpServletRequest를 autowire 할 수 있습니다.

    @Component
    @Scope("request")
    public class Foo {
        @Autowired private HttpServletRequest request;
    
        //
    }
    

    그렇지 않으면 다음과 같이 현재 요청을 가져올 수 있습니다.

        ServletRequestAttributes sra = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        HttpServletRequest req = sra.getRequest();     
    

    이것은 커버 아래 스레드 로컬을 사용합니다.

    Spring MVC를 사용하고 있다면 필요한 모든 것. Spring MVC를 사용하지 않는다면 web.xml에 RequestContextListener 또는 RequestContextFilter를 등록해야한다.

  2. from https://stackoverflow.com/questions/6300812/get-the-servlet-request-object-in-a-pojo-class by cc-by-sa and MIT license