WAR에서 주석을 사용하여 서블릿 필터 실행 순서를 정의하는 방법
웹앱 특정 서블릿 필터를 WAR 자체로 정의 web.xml
하면 필터 실행 순서는에 정의 된 순서와 동일합니다 web.xml
.
그러나 @WebFilter
주석을 사용하여 해당 필터를 정의하면 필터 실행 순서는 무엇이며 어떻게 실행 순서를 결정할 수 있습니까?
실제로 @WebFilter
주석을 사용하여 필터 실행 순서를 정의 할 수 없습니다 . 그러나 web.xml
사용량 을 최소화하려면 정의 filterName
가 필요하지 않고 원하는 순서 <filter>
의 <filter-mapping>
정의 만 필요하도록 모든 필터에 주석을 달면 충분합니다 .
예를 들어
@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}
에서와 web.xml
그냥이 :
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/url1/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>/url2/*</url-pattern>
</filter-mapping>
에 URL 패턴을 유지하려면 @WebFilter
다음과 같이하십시오.
@WebFilter(filterName="filter1", urlPatterns="/url1/*")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2", urlPatterns="/url2/*")
public class Filter2 implements Filter {}
그러나 비어있을 수 있지만 XSD에 따라 필요하기 때문에 여전히 <url-pattern>
in을 유지해야합니다 web.xml
.
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern />
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern />
</filter-mapping>
그것의 존재에 질식 때문에 접근 방법에 관계없이,이 모든 버전 7.0.28까지 톰캣에 실패 할 것 <filter-mapping>
없이 <filter>
. 참조 , @WebFilter가하는 <필터 매핑>하지 작업 내부의 web.xml Tomcat을 사용하여
서블릿 3.0 스펙은 컨테이너가 어노테이션을 통해 선언 된 필터를 주문하는 방법에 대한 힌트를 제공하지 않는 것 같습니다. 그러나 web.xml 파일에서 선언을 통해 필터를 주문하는 방법은 분명합니다.
안전한. 상호 종속성이있는 web.xml 파일 순서 필터를 사용하십시오. web.xml 파일을 사용해야 할 필요성을 최소화하기 위해 필터를 모두 독립적으로 주문하십시오.
@WebFilter에는 필터 실행 순서를 정의하는 요소가 없습니다. 필요한 경우 web.xml을 선택해야합니다.
'Programing' 카테고리의 다른 글
빌드 유형이 제품 맛과 다른 이유는 무엇입니까? (0) | 2020.06.01 |
---|---|
Python 3에서 x ** 4.0이 x ** 4보다 빠른 이유는 무엇입니까? (0) | 2020.06.01 |
파이썬에서 중첩 된 try / except 블록이 좋은 프로그래밍 습관입니까? (0) | 2020.06.01 |
NumPy 2d 배열의 슬라이스 또는 nxn 배열에서 mxm 하위 행렬을 어떻게 추출합니까 (n> m)? (0) | 2020.06.01 |
ReSharper의 대안은 무엇입니까? (0) | 2020.06.01 |