Подтвердить что ты не робот

Отображение сервлета с использованием web.xml

У меня есть путаница в отношении структуры web.xml для сопоставления сервлетов. У меня нет никаких проблем, выполнив ее, но я пытаюсь понять, почему у нас такой шаблон в дескрипторе развертывания.

<web-app>
    <servlet>
         <servlet-name>Servlet1</servlet-name>
         <servlet-path>foo.Servlet</servlet-path>
    </servlet>
    <servlet-mapping>
         <servlet-name>Servlet1</servlet-name>
         <url-pattern>/enroll</url-pattern>
    </servlet-mapping>
</web-app>

Теперь, насколько я понимаю, когда приходит запрос для url-pattern "/enroll", контейнер сервлета будет соответствовать имени сервлета с url-образцом и будет пытаться найти соответствующий путь сервлета и будет переместите элемент управления в foo.Servlet. так что в основном было бы два прохода один для поиска сервлета-имени, а другой для сервлет-пути, мой вопрос в том, сконструирован ли контейнер для работы следующим образом.

<web-app>
        <servlet>
             <servlet-name>foo.Servlet</servlet-path>
             <url-pattern>/enroll</url-pattern>
        </servlet>
</web-app>

что было бы недостатком, если мы воспользуемся следующим подходом. Разве это не было бы более эффективным, и время отклика было бы быстрым.

4b9b3361

Ответ 1

Он позволяет сервлетам иметь несколько отображений сервлетов:

<servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-path>foo.Servlet</servlet-path>
</servlet>
<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/enroll</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/pay</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/bill</url-pattern>
</servlet-mapping>

Он позволяет отображать фильтры на конкретном сервлете:

<filter-mapping>
    <filter-name>Filter1</filter-name>
    <servlet-name>Servlet1</servlet-name>
</filter-mapping>

Ваше предложение не поддержит ни одно из них. Обратите внимание, что web.xml считывается и анализируется только один раз во время запуска приложения, а не по каждому HTTP-запросу, как вы, кажется, думаете.

Начиная с сервлета 3.0, существует @WebServlet аннотация, которая сводит к минимуму этот шаблон:

@WebServlet("/enroll")
public class Servlet1 extends HttpServlet {

См. также: