[SPRING] 스프링 MVC 인터셉터 매핑 문제
SPRING스프링 MVC 인터셉터 매핑 문제
나는이 XML 세그먼트를 가지고있다.
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/statics/**" />
<bean class="com.company.website.servlet.StaticsHandlerInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/data/**" />
<bean class="com.company.website.servlet.AJAXHandlerInterceptor" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.company.website.servlet.PageHandlerInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
StaticsHandlerInterceptor는 true (모든 정적 컨텐츠 (js, css, 등))를 반환하는 preHandle 메소드 일 뿐이지 만, 이유는 세 가지 인터셉터가 있습니다. 두 번째는 AJAX 요청입니다. 세 번째 페이지는 실제 페이지입니다. 내가보기에는 정적과 AJAX 인터셉터가 있어야만 호출됩니다. 그러나, 그들과 함께, 페이지 인터셉터는 항상 호출되고 있습니다. 페이지 인터셉터 만 페이지를 호출하도록합니다. 어떻게해야합니까?
해결법
-
==============================
1.페이지에 대해 일관된 이름 지정 체계를 사용한다고 가정합니다. 외부에서 볼 수있는 페이지 URL이 .html로 끝나는 경우 다음을 지정하십시오.
페이지에 대해 일관된 이름 지정 체계를 사용한다고 가정합니다. 외부에서 볼 수있는 페이지 URL이 .html로 끝나는 경우 다음을 지정하십시오.
<mvc:mapping path="/**/*.html" />
그런 "확장"을 가지고있는 것은 매우 RESTful하지 않습니다. 다음과 같은 스키마를 사용하는 것을 선호 할 수 있습니다.
그렇다면 다음과 같이 멋진 읽을 수있는 의미 매핑을 사용할 수 있습니다.
<mvc:mapping path="/**/page/**" />
이는 URL 구조의 "깊이"에 영향을 미칩니다.
편집 : OK 그래서 그것은 mvc : interceptors 스타일의 bean 선언을 사용하는 것이 include가 아닌 pattern으로 제외를 지정하는 데 필요한 표현력을 제공하지 못하는 것 같습니다.
이 블로그에서 내가 할 수있는 것부터 좀더 자세한 HandlerMapping 접근법을 사용하면 일치 논리를 뒤집을 수 있습니다 - 필요한 것을 얻기 위해 일치하지 않는 것을 지정할 수 있습니다 :
<bean id="nonStaticNonDataMapper" class="org.springplugins.web.IgnoreSelectedAnnotationHandlerMapping"> <property name="order"> <value>0</value> </property> <property name="urls"> <list> <value>/statics/**</value> <value>/data/**</value> </list> </property> <property name="interceptors"> <list> <bean class="com.company.website.servlet.PageHandlerInterceptor" /> </list> </property>
(위의 스 니펫을 포맷팅 해 주셔서 사과드립니다. Markdown은 / **가 주석이라고 생각합니다 .-)
-
==============================
2.mvc : 인터셉터는 이제 특정 매핑을 제외시킬 수 있습니다. 현재 스프링 3.2.0.M2에서만 사용 가능합니다. JIRA 항목 (지금 해결됨)에서 자세한 정보를 찾을 수 있습니다 : https://jira.springsource.org/browse/SPR-6570
mvc : 인터셉터는 이제 특정 매핑을 제외시킬 수 있습니다. 현재 스프링 3.2.0.M2에서만 사용 가능합니다. JIRA 항목 (지금 해결됨)에서 자세한 정보를 찾을 수 있습니다 : https://jira.springsource.org/browse/SPR-6570
from https://stackoverflow.com/questions/8044277/spring-mvc-interceptor-mapping-problems by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 트랜잭션 관리 테스트 (0) | 2019.04.02 |
---|---|
[SPRING] 응용 프로그램이 시작될 때 데이터베이스에서 Ehcache로 데이터를로드하는 방법 (0) | 2019.04.02 |
[SPRING] HSQLDB를 웹 애플리케이션에 Spring 파일로 삽입하는 법 (0) | 2019.04.02 |
[SPRING] Spring 3.1 및 Hibernate 4의 현재 스레드 예외에 대해이 No Session이 발견 된 이유 (0) | 2019.04.02 |
[SPRING] 모든 jsp 페이지에 css 및 js 파일을 포함하십시오. (0) | 2019.04.02 |