답변:
실제로 @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을 사용하여
<url-pattern />
JBoss EAP 6.1에서는 사용 이 작동하지 않습니다. @WebFilter
값을 무시 하고 필터가 전혀 실행 되지 않습니다 .
서블릿 3.0 스펙은 컨테이너가 어노테이션을 통해 선언 된 필터를 주문하는 방법에 대한 힌트를 제공하지 않는 것 같습니다. 그러나 web.xml 파일에서 선언을 통해 필터를 주문하는 방법은 분명합니다.
안전한. 상호 종속성이있는 web.xml 파일 순서 필터를 사용하십시오. web.xml 파일 사용 필요성을 최소화하기 위해 필터를 모두 독립적으로 주문하십시오.
order
중첩 된@WebFilterMapping
주석 의 속성을 도입 할 수있었습니다 . 나는 그것을 단순하게하지 않았는지 궁금하다