что, если шаблон URL соответствует нескольким сервлетам?

#java #jakarta-ee #servlets #web.xml

#java #джакарта-ee #сервлеты #web.xml

Вопрос:

 <servlet-mapping>
  <servlet-name> s1</servlet-name>
  <url-pattern> /abc </url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name> s2</servlet-name>
  <url-pattern> /abc </url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name> s3</servlet-name>
  <url-pattern> /* </url-pattern>
</servlet-mapping>
  

Какой сервлет будет вызван, если придет запрос / abc?и почему?

Ответ №1:

Проверьте это. Короче говоря:

  • если сопоставления имеют точно такой же шаблон, нет никакой гарантии, какой из сервлетов будет вызван. Так что избегайте этого.
  • Если шаблоны перекрываются, выбирается наиболее конкретный. ( /abc более конкретно, чем /* )

Комментарии:

1. Хорошее объяснение, и предоставленная ссылка потрясающая, простая для понимания.

2. Применяется ли то же самое для url-pattern в filter-mapping ?

3. @Bozho ссылка больше не работает. Вот путь к копированию машины web.archive.org/web/20160224184048/http://docs.roguewave.com /…