programing

봄 콩에서 Http Servlet 요청을 받으려면 어떻게 해야 합니까?

topblog 2023. 8. 21. 19:24
반응형

봄 콩에서 Http Servlet 요청을 받으려면 어떻게 해야 합니까?

저는 플렉스 기반 프론트엔드와 스프링/하이버네이트 백엔드를 갖춘 앱을 개발하고 있습니다.

현재 내가 가지고 있는 방식으로 페이스북 통합이 작동하려면, 나는 백엔드의 프론트엔드에 있는 자바스크립트로 설정된 쿠키 세트를 읽고 사용자가 페이스북 로그인을 스푸핑하려고 하는지 로그인하는 동안 약간의 검증을 해야 합니다.

이것은 꽤 쉬울 것입니다만, Http Servlet Request를 얻는 방법을 알 수 없습니다.저는 꽤 기본적인 Spring 구성을 사용하고 있습니다(이것은 저의 첫 번째 실제 Spring 앱이고, 지금은 꽤 익숙하지만, 한 번도 본 적이 없는 것들이 많습니다).

저는 Spring MVC나 Spring WebFlow 같은 것을 사용하지 않습니다.서블릿 컨텍스트를 얻을 수는 있지만, 요청을 받는 방법은 아직 모릅니다.

도와드릴까요?

FlexContext를 사용할 수 없는 경우:

솔루션 1: 내부 방법 (>= 스프링 2.0 필요)

HttpServletRequest request = 
        ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
                .getRequest();

솔루션 2: 콩 내부 (>= 2.5 지원, 싱글톤 콩의 경우 스프링 3.0 필요!)

@Autowired
private HttpServletRequest request;

이것은 일종의 Flex/Blaze입니다.DS에 특화되어 있지만, 여기 제가 생각해 낸 해결책이 있습니다.내 질문에 대답하는 것이 거짓이라면 미안합니다.

    HttpServletRequest request = flex.messaging.FlexContext.getHttpRequest();

    Cookie[] cookies = request.getCookies();

    for (Cookie c:cookies)
    {
        log.debug(String.format("Cookie: %s, %s, domain: %s",c.getName(), c.getValue(),c.getDomain()));
    }

효과가 있어요. 쿠키를 가져올게요.내 문제는 봄 - 블레이즈를 보는 것이었습니다.DS가 가지고 있었어요.봄도 아마 그럴 것이지만, 저는 여전히 봄에 어떻게 가야 할지 모르겠습니다.

@내가 스프링 부트(2.0.4)를 사용하고 있고 다를 수 있지만 2018년 버전은 다음과 같이 작동합니다.

@Autowired
private HttpServletRequest request;

이것으로 충분합니다.

((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getRequestURI();

@Context주석(이 질문의 답변 참조:컨텍스트 주석은 봄에 어떤 역할을 합니까?)을 통해 주입됩니다.

나는 사용해야 했습니다.

@Context
private HttpServletRequest request;

더 나은 방법은 생성자를 사용하여 자동 배선하는 것입니다.

private final HttpServletRequest httpServletRequest;

public ClassConstructor(HttpServletRequest httpServletRequest){
      this.httpServletRequest = httpServletRequest;
}

언급URL : https://stackoverflow.com/questions/559155/how-do-i-get-a-httpservletrequest-in-my-spring-beans

반응형