Конструктор сервлетов и метод init () - PullRequest
7 голосов
/ 27 сентября 2008

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

1 Ответ

18 голосов
/ 27 сентября 2008

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

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

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

...