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

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

А также

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

А также

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

А также

 <url-pattern>*.do</url-pattern>
2
user3590092 5 Май 2014 в 20:49

2 ответа

Лучший ответ

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

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

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

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

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

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

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

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

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

1
John 5 Май 2014 в 18:19

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

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

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

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

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

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

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

2
Community 20 Июн 2020 в 09:12