2008-09-27 4 views
7

Зачем нам нужен метод init() в сервлет? Не можем ли мы использовать конструктор для инициализации?Конструктор сервлета и метод init()

+0

См. [Мой ответ на аналогичный вопрос] (http://stackoverflow.com/questions/1276082/constructor-in-servlet/2659597#2659597). – gawi 2010-04-17 19:07:55

ответ

18

Потому что Servlet - это интерфейс, а не абстрактный класс. Аргументы конструктора не могут быть указаны на интерфейсе, поэтому ServletContext должен быть указан на обычной сигнатуре метода.

Это позволяет серверу приложений знать, как правильно инициализировать реализацию сервлета.

Другим решением было бы требование, но не принудительное во время компиляции, конструктор, берущий ServletContext. Затем сервер приложений вызовет конструктор через отражение. Однако разработчики спецификации Servlet не выбрали этот путь.

+1

+1 действительно полезно :) – 0decimal0 2013-07-25 04:21:03