2012-01-27 5 views
0

/{servlet}/history를 지원해야하며이를 지원해야하는 서블릿이 많이 있습니다. Tomcat, FWIW를 사용하고 있습니다.이러한 URL 패턴을 서블릿 매핑에 결합 할 수 있습니까?

다음과 같은 작동하지만 모든 패턴을 한 줄로 조합하여 내역 패턴을 지원해야하는 모든 서블릿에 url-pattern을 추가하지 않는 방법이 있는지 궁금합니다. 여러 옵션을 시도했지만 실패했습니다.

<servlet> 
    <servlet-name>History</servlet-name> 
    <servlet-class>com.foo.HistoryServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>History</servlet-name> 
    <url-pattern>/aDifferentServlet/history/*</url-pattern> 
    <url-pattern>/someOtherOne/history/*</url-pattern> 
    <url-pattern>/anotherExample/history/*</url-pattern> 
</servlet-mapping> 
... 
<servlet> 
    <servlet-name>aDifferentServlet</servlet-name> 
    <servlet-class>com.foo.aDifferentServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>aDifferentServlet</servlet-name> 
    <url-pattern>/aDifferentServlet/*</url-pattern> 
</servlet-mapping> 
... 

감사합니다.

+0

"모든 서블릿에 대해"무엇을 의미합니까? 단일 서블릿을 여러 경로에 매핑합니다. –

+0

죄송합니다. url 패턴의 서블릿 *을 언급하고 있습니다. 각각의 경로는 실제로 서블릿을 나타냅니다. servletA에 대해서는 servletA, B, C 등을 통과 한 모든 것을 기록하도록 지원해야합니다. –

답변

3

하면 일반 접두사 (폴더) 패턴 /history/* 같은 또는 접미사 (확장자)을 지정해야 할 것, 단 하나 개의 URL 패턴을 가지고 패턴은 *.history입니다. 두 개의 와일드 카드가 일치하는 URL 패턴은 */history/*과 같이 사용할 수 없습니다. 가장 좋은 방법은 /history/*에 기록 서블릿을 매핑하고 URL을 예를 들어 /history/aDifferentServlet으로 변경하는 것입니다 (이 부분은 내역 서블릿에서 request.getPathInfo()에 의해 사용 가능함).

URL을 변경하는 것이 바람직하지 않은 경우 요청 URI가 */history/* 패턴과 일치 할 때마다 Filter을 작성하거나 기록 서블릿으로 전달할 서블릿을 다시 작성해야합니다.

0

패턴은 별표로 끝나거나 하나 (파일 확장명 매핑을 나타 내기 위해)로 시작할 수 있습니다.

대한 추가 정보는에서 : 위해

http://javapapers.com/servlet/what-is-servlet-mapping/#&slider1=1

The url-pattern specification: 

     *A string beginning with a ‘/’ character and ending with a ‘/*’ 
     suffix is used for path mapping. 
     *A string beginning with a ‘*.’ prefix is used as an extension mapping. 
     *A string containing only the ’/’ character indicates the "default" 
     servlet of the application. In this case the 
     servlet path is the request URI minus the context path and the path 
     info is null. 
     *All other strings are used for exact matches only. 
+0

미안하지만 분명히해야합니다. 실제 서블릿 이름은 실제 이름을 가리는 서블릿 *이 아닙니다./doStuff,/aDifferentServlet,/login 등과 같이 더 생각하십시오. –

+0

어때요? 매핑을 편집했습니다. 당신은 항상 공통점이있는 역사를 당신은 항상 가지고 있습니까? – fmucar

+0

도움을 주셔서 감사합니다.하지만 작동하지 않는 것 같습니다. –

관련 문제