2011-02-10 4 views
2

URL에 쿼리 매개 변수가 있는지 여부와 상관없이 HTML 페이지에 대한 요청을 선택하는 필터를 작성하려고합니다. URL 패턴이 "로 끝나는 페이지에 대한 요청을 일치합니다쿼리 매개 변수가 포함 된 URL을 포함하여 모든 .html URL에 대한 URL 매핑

<filter-mapping> 
    <filter-name>statTrackingFilter</filter-name> 
    <url-pattern>*.html</url-pattern> 
</filter-mapping> 

그건 :

내 web.xml 파일에있는 이것은 필터 매핑 (이 필터의 목적은 방문자의 행동/통계를 추적하는 것입니다). html "이지만 쿼리 매개 변수로 요청을 캡처하고 싶습니다.

나는 다음과 같은 구성을 시도했다, 그러나 그것은 과거의 어떤 요청과 일치하지 않습니다

<filter-mapping> 
    <filter-name>statTrackingFilter</filter-name> 
    <url-pattern>*.html*</url-pattern> 
</filter-mapping> 

가 어떻게 어떤 HTML 페이지에 대한 모든 요청을 캡처 내 필터를 구성 할 수 있습니까?

아니면 잘못된 길로 가고 있습니까? 필터가 모든 요청을 수신하도록하고 요청 된 URL이 중요한지 여부를 필터가 결정하도록해야합니까? 모든 CSS, JS 및 이미지 요청을 무시하고 싶습니다.

감사합니다.

편집 :<url-pattern>*.html</url-pattern> 실제로 작동했습니다. Log4j 임계 값이 너무 높게 설정되어 있기 때문에 내 필터의 로그가 무시되고있는 것이 아니라고 생각했습니다.

답변

3

*.html* 패턴은 확장명이 ".html *"인 파일 만 일치하기 때문에 작동하지 않습니다. link에서

:

URL 패턴은 매우 간단한 구문을 사용합니다. 패턴의 모든 문자는 두 가지 예외를 제외하고 URL 경로의 해당 문자와 ​​정확히 일치해야합니다. 패턴의 끝에서,/*는 그 시점의 모든 문자 시퀀스를 찾습니다. * .extension 패턴은 extension으로 끝나는 모든 파일 이름과 일치합니다. 다른 와일드 카드는 지원되지 않으며 패턴의 다른 위치에있는 별표는 와일드 카드가 아닙니다.

<url-pattern>*.html</url-pattern>을 사용하는 첫 번째 구성이 정확하고 마지막에 쿼리 매개 변수를 사용하여 요청을 캡처해야합니다 (어쨌든 나를위한 것 같습니다).

+0

당신이 맞습니다.'* .html' 패턴은 실제로 정확하고 내가 찾던 모든 것을 집어 들었습니다. 내 로그 임계 값이 너무 높았 기 때문에 요청이 누락되었다고 생각하고 필터가 작동하는지 확인하기 위해 로그에서 로그를 찾고있었습니다. D' oh! – ampersandre