복붙노트

[SPRING] 서블릿 매핑 url-pattern에서 이중 와일드 카드 (*)는 무엇을 의미합니까?

SPRING

서블릿 매핑 url-pattern에서 이중 와일드 카드 (*)는 무엇을 의미합니까?

하나 또는 두 개의 와일드 카드를 사용하여 서블릿 매핑의 url 패턴을 설명하는 차이점이 무엇인지 궁금합니다.

예를 들면 다음과 같습니다.

1)

<servlet-mapping id="...">
    <servlet-name>BuyServlet</servlet-name>
    <url-pattern>/buy/*</url-pattern>
</servlet-mapping>

2)

<servlet-mapping id="...">
    <servlet-name>ShopServlet</servlet-name>
    <url-pattern>/shop/**</url-pattern>
</servlet-mapping>

편집하다: @Andrew가 맞습니다. 사양에서는 단 하나의 와일드 카드 (*)에 대해 설명합니다.

나는 두 번째 와일드 카드 (**)를 발견 한 곳이 Spring SimpleUrlHandlerMapping 빈에 있음을 발견했다.

이 경우에는 의미가 있습니다. 클래스 문서에 따르면 AntPathMatcher가 사용됩니다.

해결법

  1. ==============================

    1.서블릿 사양 (버전 2.5)의 섹션 11.2에는 다음 내용이 설명되어 있습니다.

    서블릿 사양 (버전 2.5)의 섹션 11.2에는 다음 내용이 설명되어 있습니다.

    그래서 나는 두 번째 변형 (**)이 의미가 없다고 생각합니다.

    추신 나는 그런 매핑을 설정하려고 시도했지만이 URL / shop / ** 만 일치 할 것으로 보인다 (Tomcat 6.0.32).

  2. ==============================

    2.Servlet 명세 자체 (버전 3.0, 12.2 절)는 두 종류의 와일드 카드 매핑만을 정의합니다.

    Servlet 명세 자체 (버전 3.0, 12.2 절)는 두 종류의 와일드 카드 매핑만을 정의합니다.

    예 : "/ foo /"는 "http : // server / context / foo /"로 시작하는 URL에 대한 모든 요청과 일치하고 ".jsp"는 ".jsp"로 끝나는 URL에 대한 모든 요청과 일치합니다.

    사양 다음에 빈 문자열 ( "")과 단일 슬래시 ( "/")는 특별한 의미를 갖습니다. "다른 모든 문자열은 정확한 일치에만 사용됩니다."

    스펙 다음에는 두 번째 예제가 와일드 카드 패턴이 전혀 없지만 "/ shop / **"과 정확히 일치해야합니다. 그러나 대부분의 서블릿 컨테이너는 덜 엄격하므로 임의의 위치에서 * 와일드 카드를 사용하거나 더 복잡한 패턴 일치 옵션을 제공 할 수 있습니다.

  3. ==============================

    3.두 번째 경우에 대해 이야기하는 곳에서는 사양이 없습니다.

    두 번째 경우에 대해 이야기하는 곳에서는 사양이 없습니다.

    서블릿 사양에 따라 12.2

    All other strings are used for exact matches only.
    

    명세에 따라 정확하게 일치하는 경우에만 초가 고려됩니다. 서버 제공 업체에 따라 다를 수 있습니다.

  4. from https://stackoverflow.com/questions/13843294/what-does-the-double-wildcard-on-a-servlet-mapping-url-pattern-mean by cc-by-sa and MIT license