Расширить HttpServlet реализовать ServletContextListener - PullRequest
1 голос
/ 29 сентября 2011

Полезно ли для класса расширять HttpServlet и реализовывать ServletContextListener?

public Myclass extends HttpServlet implements ServletcontextListener {
}

Каковы плюсы и минусы этого?

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Некоторые мысли:

  • У вас будет как минимум два экземпляра вашего класса. Контейнер создает один как ServletContextListener и как минимум один как HttpServlet, когда ваш сервлет получает входящий запрос.
  • Поскольку 2+ экземпляров, вы не можете использовать экземпляры (просто статические) члены для обмена данными.
  • Проще, если другие классы не используют данные / объекты, которые вы инициализируете и разделяете в слушателе, потому что вам не нужно помещать эти данные / объекты в область приложения в ServletContextListener и извлекать их в HttpServlet.
  • Если ваша логика инициализации сложна, возможно, стоит отделить ее от кода сервлета (например, поместить код инициализации в другой класс и использовать область приложения для получения общих объектов в сервлете).
0 голосов
/ 29 сентября 2011

Все зависит от вас, исполнителя. ServletcontextListener имеет свое конкретное назначение.Перед использованием убедитесь, что вы знаете, для чего он нужен.

В случае, если вы создаете сервлет HTTP, вы должны расширить HttpServlet . Если ваш класс хочет " получить"уведомления об изменениях в контексте сервлета веб-приложения "(скопировано из javadocs), частью которого оно является, необходимо реализовать ServletcontextListener.

...