Могу ли я сделать это сложное отображение URL в веб-контейнере с помощью сервлета?

1

Есть два сервлета: A, B

Отображение к: /*

B для отображения: /sub_dir/*

если url находится в /sub_dir/* то он обрабатывается B, иначе A.

  • 0
    Что вы имеете в виду, если URL находится в /sub_dir/* ?
  • 1
    Для этого вы хотите обойти отображение URL-адреса контейнера. Таким образом, вы должны настроить сервлет для обработки / *, а затем самостоятельно проанализировать строку URL-адреса и направить трафик по своему усмотрению, используя RequestDispatcher.
Показать ещё 1 комментарий
Теги:
servlets
tomcat

1 ответ

2
Лучший ответ

Это может помочь вам понять url-pattern

Процедура соответствия сервлета

Запрос может соответствовать более чем одному сервлет-отображению в данном контексте. Контейнер сервлета использует процедуру прямого сопоставления для определения наилучшего соответствия.

Процедура сопоставления имеет четыре простых правила.

  • Во-первых, контейнер предпочитает точное соответствие пути по совпадению с шаблоном.

  • Во-вторых, контейнер предпочитает соответствовать самому длинному шаблону.

  • В-третьих, контейнер предпочитает соответствие пути по совпадениям типа файла.

  • Наконец, шаблон <url-pattern>/</url-pattern> всегда соответствует любому запросу, который не соответствует никакому другому шаблону.


Взгляните на мой другой пост. Как фильтр сервлетов идентифицировать следующий пункт назначения - это другой фильтр или сервлет /jsp? для подробного описания.

Могу ли я сделать это сложное отображение URL-адресов в веб-контейнере с помощью сервлета?

Да, вы можете создать сложное отображение URL-адресов, просто соблюдая правила в уме.

В вашем случае наиболее конкретный или самый длинный url-pattern /sub_dir/* имеет более высокий приоритет над /* в соответствии с правилом.

  • 0
    именно то, что я хочу! благодарю вас!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню