Вы, очевидно, в середине разработки с сервлетами. Вам необходимо обеспечить , чтобы веб-приложение было полностью опубликовано всякий раз, когда вы вносили изменения в web.xml
или в любой из Servlet
классов. В противном случае вы можете рискнуть, что ресурс не будет найден.
Проще говоря, ошибка «ресурс не найден» в основном совпадает с «404 страница не найдена». Контейнер сервлета не может найти ресурс, который соответствует URL или url-pattern
. Вот и все.
Что касается жизненного цикла Servlet
, он будет создан только один раз во время запуска веб-приложения (публикация, создание контекста), будет вызван метод init()
, и экземпляр будет сохранен в память сервера в сортировке из Map<Url-Pattern, Servlet>
. Если вы переопределили метод init()
в вашего Servlet
, он будет вызван. Контейнер сервлета будет делать то же самое для всех сервлетов, объявленных в web.xml
(или в соответствии с Java EE 6, помеченных @WebServlet
).
Каждый раз, когда запрос, URL-адрес которого соответствует url-pattern
из Servlet
, будет вызываться (унаследованный) метод service()
. Нормальная реализация HttpServlet
будет определять метод, который будет выполняться на основе HttpServletRequest#getMethod()
. Если вы переопределили любой из этих методов (doGet()
, doPost()
и т. Д.) В your Servlet
, то он будет вызван соответствующим образом.
Наконец, когда веб-приложение собирается завершить работу (отменить публикацию, уничтожить контекст), тогда destroy()
будет вызван для любого из Servlet
экземпляров, хранящихся в памяти сервера. Если вы переопределили метод destroy()
в вашего Servlet
, он будет вызван.