복붙노트

[SPRING] Spring MVC 3에서 뷰 / 응답 가로 채기

SPRING

Spring MVC 3에서 뷰 / 응답 가로 채기

Spring MVC 3을 처음 접했고 기본적인 개념을 이해한다. 나는 컨트롤러와 서비스와 뷰를 만드는 것과 같은 간단한 일을 할 수있다. 그러나, 나는 더 진보 된 영역으로 진출하지 못했습니다. 그러므로이 질문이 어리석은 (또는 불가능한) 것으로 보이는다면 사과드립니다.

클라이언트에게 전송되기 전에보기 및 / 또는 응답을 가로 채고 수정하는 방법이 있는지 궁금합니다. 이것이 스프링이 클라이언트에게 나가는 길에 양식 요소에 대한 데이터 바인딩을 수행하는 방법이라고 생각합니다. 내가하고 싶은 것은 도메인 클래스 내의 요소에 대한 주석을 검사하고 그 주석에 따라보기를 수정하는 것입니다. 여기에는 새로운 코드 (HTML 또는 Javascript)를 응답에 삽입하는 작업이 포함됩니다.

최신 정보

이것에 대해 조금 더 생각해 보았을 때 최종 렌더링이 JSP에 의해 완료되었음을 알게되었습니다. 따라서 페이지로 이동하기 전에 모델을 가로 채서 데이터가 바인딩되는 bean의 주석을 파악할 수있는 방법이 있는지 의문이 생깁니다.

이것을 할 수있는 방법이 있습니까?

해결법

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

    1.당신이 찾고있는 클래스는 org.springframework.web.servlet.HandlerInterceptor입니다. 인터페이스에서 postHandle 메소드를 구현할 수 있습니다. 서명에서 알 수 있듯이 요청 및 응답과 컨트롤러가 만든 모델 개체. (그리고 컨트롤러 자체는 Object 처리기 매개 변수입니다.)

    당신이 찾고있는 클래스는 org.springframework.web.servlet.HandlerInterceptor입니다. 인터페이스에서 postHandle 메소드를 구현할 수 있습니다. 서명에서 알 수 있듯이 요청 및 응답과 컨트롤러가 만든 모델 개체. (그리고 컨트롤러 자체는 Object 처리기 매개 변수입니다.)

    Dispatcher 서블릿의 처리기 매핑에 추가하여 '켜십시오'.

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <list>
                <bean class="a.package.MyHandlerInterceptor"/>
            </list>
        </property>
    </bean>
    

    덧붙여 말하면, 실제로 바인딩은 Controller 메소드를 찾아서 호출하는 HandlerAdapter 내부에서 수행되며 인터셉터가 아닙니다.

    편집하다: 편집에 대답하기 위해 컨트롤러가 완료된 후에 모델 객체를 잡고 JSP 렌더링으로 이동하기 전에 모델 객체를 잡고 작업 할 수 있습니다. 따라서 ModelMap에 myCustomScript를 추가하고 JSP의 에 $ {myCustomScript}를 던지거나 ModelMap에서 백업 객체를 가져 와서 검사하는 등의 작업을 수행 할 수 있습니다.

  2. ==============================

    2.예, 실제로 여러 가지 방법이 있습니다.

    예, 실제로 여러 가지 방법이 있습니다.

  3. from https://stackoverflow.com/questions/3292464/intercept-the-view-response-in-spring-mvc-3 by cc-by-sa and MIT license