Можно ли не указывать имя класса с помощью @WebListener (в отличие от @WebServlet)? - PullRequest
0 голосов
/ 05 февраля 2019

Должен ли я когда-либо указывать имя класса для @WebListener аннотации, как я должен сделать для @WebServlet("/MyClassname")?

В моем приложении просто @WebListener работает нормально, но у меня только single ServletContextListener - возможно, если бы у меня было несколько, это было бы иначе?

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
...
}

@WebListener
public class InitWebAppServlet implements ServletContextListener {
...
}

1 Ответ

0 голосов
/ 06 февраля 2019

Значение в @WebServlet не является именем класса.Это путь URL.При использовании только одного параметра, как показано на рисунке, он эквивалентен:

@WebServlet(urlPatterns = {"/MyServlet"})

Ваш код мог бы быть таким же простым:

@WebServlet("/bobsyouruncle")
public class MyServlet extends HttpServlet {
...
}

Это означает, что вы получите доступ к своемусервлет с URL /bobsyouruncle вместо /MyServlet.См. WebServlet javadocs для получения более подробной информации.Обратите внимание, что для аннотаций, если у вас есть только один параметр, он устанавливает элемент value.

Необязательное значение параметра @WebListener предназначено для описания слушателя (см. javadocs WebListener *).1017 *).Опять же, это не имя класса.Вы можете иметь столько классов @WebListener, сколько захотите, однако, используя метод аннотации вместо метода web.xml, вы не можете гарантировать порядок, в котором их выполняет контейнер сервлета.

...