Web.xml: бирки URL-образца относительно друг друга?
-
01-10-2019 - |
Вопрос
<servlet-mapping>
<servlet-name>myName</servlet-name>
<url-pattern>/aName</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
...
<url-pattern>
/*
</url-pattern>
</web-resource-collection>
...
</security-constraint>
Это выдержка из Web.xml (используя его для настройки Websive jboss / Tomcat). Просто задаюсь вопросом, если url-pattern
в web-resource-collection
относительно url-pattern
в servlet-mapping
.
Решение
То url-pattern
Используется для выбора ограничений для данного запроса не относительно чего-либо. Интересные части спецификации сервлета здесь:
SRV.12.8.3 Запросы на обработку
Когда контейнер сервлета принимает запрос, он должен использовать алгоритм, описанный в SRV.11.1, чтобы выбрать ограничения (если таковые имеются), определенные на
url-pattern
Это лучший матч для URI запроса. Если ограничения не выделены, контейнер должен принимать запрос. В противном случае контейнер должен определять, если метод HTTP по запросу ограничен на выбранном шаблоне. Если это не так, запрос принимается. В противном случае запрос должен удовлетворять ограничениям, которые применяются кhttp-method
наurl-pattern
. Отказ Оба из следующих правил должны быть удовлетворены для того, чтобы запрос быть принятым и отправленным к соответствующему сервлету.
А также:
SRV.11.1 Использование дорожек URL
При получении запроса клиента веб-контейнер определяет веб-приложение, к которому его переслать. Выбранный веб-приложение должен иметь самый длинный контекстный путь, который соответствует началу URL-адреса запроса. Сопоставленная часть URL - это контекстный путь при сопоставлении на сервлеты.
Веб-контейнер Далее должен найти сервлет для обработки запроса с использованием процедуры сопоставления пути, описанной ниже.
Путь, используемый для отображения на сервлете, является URL-адресом запроса от объекта запроса минус контекстный путь и параметры пути. Правила сопоставления пути URL ниже используются в порядке. Первый успешный матч используется без дальнейших попыток совпадения:
- Контейнер постарается найти точное совпадение пути запроса на путь сервлета. Успешный матч выбирает сервлет.
- Контейнер рекурсивно пытается соответствовать самой длинной префиксе пути. Это сделано, наступая вниз по дереву пути каталог за раз, используя символ «/» в качестве сепаратора пути. Самый длинный матч определяет выбранный сервлет.
- Если последний сегмент в пути URL содержит расширение (например, .jsp), сервлетный контейнер постарается соответствовать сервлете, который обрабатывает запросы на расширение. Расширение определяется как часть последнего сегмента после последнего '.' персонаж.
- Если ни один из предыдущих трех правил не приведет к соответствию сервлета, контейнер попытается обслуживать контент, подходящий для запрошенного ресурса. Если для приложения определяется сервлете «По умолчанию», он будет использоваться.
SRV.11.2 Спецификация отображений
В дескрипторе развертывания веб-приложений следующий синтаксис используется для определения сопоставлений:
- Строка, начинающаяся с символом и заканчивающейся «/ *» суффикс «/ *», используется для отображения пути.
- Строка, начинающаяся с '*.' Префикс используется в качестве расширения.
- Строка, содержащая только символ '/', указывает на сервлете «по умолчанию» приложения. В этом случае путь сервлета - это запрос URI минус контекстного пути и информация о пути NULL.
- Все остальные строки используются только для точных совпадений.
Другие советы
Это имеет смысл мне, что Безопасность - ограничение / веб-ресурсы-коллекция / URL-шаблон является нет относительно Сервленый сопоставление / URL-шаблон, По следующей причине: может быть несколько сопоставление сервлета элементы в web.xml, в этом случае это не было бы понятно, что Сервленый сопоставление / URL-шаблон принять, чтобы разрешить относительную URI, было ли это. (Просто предположение - я еще не использовал ограничения безопасности в Tomcat).
Нет, они не относительны друг к другу; Нет способа связать данный сопоставление сервлета к А. Ограничение безопасности. Отказ Оба применяются к заданному узору URL, ограничение безопасности также может применяться только к определенным методам HTTP (Get, Post, ...), чтобы они были вполне независимыми.
Оба элемента определены и описаны в Спецификация сервлета. Отказ Возможно, вы захотите прочитать разделы SRV.12.8 о безопасности и деталях о элементе URL-шаблона.