При условии, что вы уверены, что используете Tomcat 7 или новее, веб-приложение web.xml
должно быть объявлено в соответствии со спецификацией Servlet 3.0, чтобы Tomcat мог сканировать и обрабатывать аннотации. В противном случае Tomcat по-прежнему будет работать в резервном режиме, соответствующем версии сервлета в web.xml
. Поддержка аннотаций API сервлетов была добавлена только в Servlet 3.0 (Tomcat 7).
Итак, корневая декларация вашего web.xml
должна выглядеть следующим образом (убедитесь, что вы удалили также DOCTYPE
из web.xml
, в противном случае он все равно будет интерпретироваться как Servlet 2.3!).
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
Кроме того, есть небольшая разница в шаблоне URL. Шаблон URL /notifications
позволит сервлету прослушивать только запросы именно по этому пути. Он не срабатывает при запросах с дополнительным путем, например /notifications/list
или чем-то еще. Шаблон URL /notifications/*
позволит сервлету также прослушивать запросы с дополнительной информацией о пути.
Минимальная @WebServlet
аннотация должна выглядеть следующим образом
@WebServlet("/notifications/*")
Остальные атрибуты являются необязательными и, следовательно, не обязательны для обеспечения одинаковой работы сервлета.
Смотри также: