Что означает косая черта в начале / в ‹URL-шаблоне Tomcat›?

Я знаю, что не могу использовать регулярные выражения для <url-pattern> сопоставления фильтров, но можно ли использовать шаблон каталога для укажите любой URL-адрес, содержащий слово myuniqws, например:

https://my.hostname.org/myuniqws/myport/soap?wsdl

Я думаю, что, возможно, это будет правильный синтаксис:

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

но мне не удалось найти документацию по точному правилу синтаксиса Tomcat <url-pattern>.

Будет ли приведенное выше регулярное выражение работать так, как я хочу?


Обновление:

Благодаря приведенному ниже ответу я обнаружил следующий раздел в Спецификации сервлетов Java, который в основном отвечает на мои вопросы.

12.2 Спецификация сопоставлений

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

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

Если действующий web.xml (после слияния информации из фрагментов и аннотаций) содержит какие-либо шаблоны URL-адресов, сопоставленные с несколькими сервлетами, развертывание должно завершиться неудачно.


person Withheld    schedule 30.10.2014    source источник


Ответы (1)


Предположительно, вы имеете в виду <url-pattern> для сопоставления фильтров в web.xml. Возможно, вы этого не знаете, но web.xml определен как часть Спецификации сервлетов Java. Вы можете найти полную документацию для версии 3.1 (в настоящее время самая последняя и лучшая) здесь:

https://jcp.org/aboutJava/communityprocess/final/jsr340/index.html

Если вы прочитаете раздел 12.2 («Спецификация сопоставлений»), вы сможете точно увидеть, какие типы шаблонов распознаются, включая сопоставление префиксов, которое вы запрашиваете выше.

EDIT 2014-11-04: вы должны знать, что CATALINA_HOME/conf/web.xml (или CATALINA_BASE/conf/web.xml, если он у вас есть) является конфигурацией по умолчанию для всех веб-приложений, развернутых на Tomcat, и что WEB-INF/web.xml вашего веб-приложения является конфигурацией, специфичной для вашего собственного веб приложение. Оба этих файла должны иметь следующие операторы xmlns и, следовательно, указывать вам (своими URI), что на них распространяется Спецификация сервлета Java (или, по крайней мере, Java EE, которая включает спецификацию сервлета):

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0">
person Christopher Schultz    schedule 30.10.2014
comment
Действительно, я не знал, что web.xml Tomcat на самом деле совпадает с web.xml в Спецификации сервлетов Java. +1 и принимаю. - person Withheld; 30.10.2014