В чем разница между этими шаблонами сопоставления URL-адресов?

В чем разница между этими сопоставлениями URL?

<url-pattern>/servlet</url-pattern>

а также

<url-pattern>/servlet/*</url-pattern>

а также

<url-pattern>/*</url-pattern>

а также

 <url-pattern>*.do</url-pattern>

person user3590092    schedule 05.05.2014    source источник


Ответы (2)


Обратите внимание, что корень (/) означает корень контекста вашего веб-приложения.

<url-pattern>/servlet</url-pattern>

Соответствует определенному ресурсу, который напрямую соответствует пути servlet в корневом каталоге (/)

<url-pattern>/servlet/*</url-pattern>

Соответствует любому ресурсу под /servlet.

<url-pattern>/*</url-pattern>

Соответствует любому ресурсу в корневом каталоге (/).

<url-pattern>*.do</url-pattern>

Соответствует определенному шаблону файла, т. е. заканчивающемуся на .do.

person John    schedule 05.05.2014

Шаблоны URL описаны в Спецификация сервлета 3.0, раздел 12.2 Спецификация сопоставления:

В дескрипторе развертывания веб-приложения для определения отображений используется следующий синтаксис:

  • Строка, начинающаяся с символа / и заканчивающаяся суффиксом /*, используется для отображения пути.

  • Строка, начинающаяся с префикса *., используется в качестве отображения расширения.

  • Пустая строка () — это специальный шаблон URL, который точно соответствует корню контекста приложения, т. е. запросам формы http://host:port/<context-root>/. В этом случае информация о пути — /, а путь сервлета и путь контекста — пустая строка («»).

  • Строка, содержащая только символ /, указывает сервлет приложения по умолчанию. В этом случае путь сервлета — это URI запроса минус путь контекста, а информация о пути равна нулю.

  • Все остальные строки используются только для точного совпадения.

person kapex    schedule 05.05.2014