Почему мы не можем вызвать конструктор сервлета вместо метода init для инициализации параметров конфигурации? - PullRequest
10 голосов
/ 04 марта 2010

Мне нравится знать, почему мы не вызываем конструктор сервлета вместо метода init для инициализации параметров конфигурации.

* БЛАГОДАРЯ 1003 *

Ответы [ 2 ]

17 голосов
/ 04 марта 2010

Эта тема должна прояснить различия.

Цитата из одного из наиболее ярких постов:

Метод init () обычно используется для выполнять сервлет инициализация - создание или загрузка объекты, которые используются сервлетом в обработке своих запросов. Зачем не использовать конструктор вместо этого? Что ж, в JDK 1.0 (для которых были сервлеты изначально написано), конструкторы для динамически загружаемые классы Java (такие как как сервлеты) не мог принять аргументы. Итак, чтобы обеспечить новый сервлет любая информация о сам и его среда, сервер должен был вызвать метод init () сервлета и передать объект, который реализует ServletConfig интерфейс. Кроме того, Java не позволяет интерфейсы для объявления конструкторов. Это означает, что javax.servlet.Servlet интерфейс не может объявить конструктор, который принимает Параметр ServletConfig. Он должен объявите другой метод, например, init (). Это все еще возможно, конечно, для вам определить конструкторы для вашего сервлеты, но в конструкторе вы не имеют доступа к ServletConfig объект или способность бросить ServletException.

3 голосов
/ 04 октября 2013

Как правило, мы можем использовать конструктор для выполнения действий по инициализации, но в старой версии Java (JDK1.0v) конструктор не может принимать динамически генерируемое имя класса в качестве аргумента. Для обязательной инициализации сервлета мы должны предоставить объект ServletConfig в качестве аргумента, имя класса которого динамически генерируется веб-контейнером, поскольку конструктор не может принимать динамически сгенерированные имена классов, поэтому солнечные люди проигнорировали концепцию конструктора и ввели специальный метод init ( -) выполнить действия по инициализации, которые могут принимать динамически генерируемое имя класса в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...