Вопрос

   <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 ниже используются в порядке. Первый успешный матч используется без дальнейших попыток совпадения:

  1. Контейнер постарается найти точное совпадение пути запроса на путь сервлета. Успешный матч выбирает сервлет.
  2. Контейнер рекурсивно пытается соответствовать самой длинной префиксе пути. Это сделано, наступая вниз по дереву пути каталог за раз, используя символ «/» в качестве сепаратора пути. Самый длинный матч определяет выбранный сервлет.
  3. Если последний сегмент в пути URL содержит расширение (например, .jsp), сервлетный контейнер постарается соответствовать сервлете, который обрабатывает запросы на расширение. Расширение определяется как часть последнего сегмента после последнего '.' персонаж.
  4. Если ни один из предыдущих трех правил не приведет к соответствию сервлета, контейнер попытается обслуживать контент, подходящий для запрошенного ресурса. Если для приложения определяется сервлете «По умолчанию», он будет использоваться.

SRV.11.2 Спецификация отображений

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

  • Строка, начинающаяся с символом и заканчивающейся «/ *» суффикс «/ *», используется для отображения пути.
  • Строка, начинающаяся с '*.' Префикс используется в качестве расширения.
  • Строка, содержащая только символ '/', указывает на сервлете «по умолчанию» приложения. В этом случае путь сервлета - это запрос URI минус контекстного пути и информация о пути NULL.
  • Все остальные строки используются только для точных совпадений.

Другие советы

Это имеет смысл мне, что Безопасность - ограничение / веб-ресурсы-коллекция / URL-шаблон является нет относительно Сервленый сопоставление / URL-шаблон, По следующей причине: может быть несколько сопоставление сервлета элементы в web.xml, в этом случае это не было бы понятно, что Сервленый сопоставление / URL-шаблон принять, чтобы разрешить относительную URI, было ли это. (Просто предположение - я еще не использовал ограничения безопасности в Tomcat).

Нет, они не относительны друг к другу; Нет способа связать данный сопоставление сервлета к А. Ограничение безопасности. Отказ Оба применяются к заданному узору URL, ограничение безопасности также может применяться только к определенным методам HTTP (Get, Post, ...), чтобы они были вполне независимыми.

Оба элемента определены и описаны в Спецификация сервлета. Отказ Возможно, вы захотите прочитать разделы SRV.12.8 о безопасности и деталях о элементе URL-шаблона.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top