Жизненный цикл сервлета начинается с запуска метода init. В абстрактном классе GenericServlet
объявлено 2 варианта метода: init()
и init(ServletConfig config)
.
В спецификации указано, что при использовании public void init(ServletConfig config)
необходимо первой строкой вызвать super.init(config)
, иначе ServletConfig
будет иметь значение null
. Это логично, поскольку в GenericSerlvet есть переменная private transient ServletConfig config
.
Однако для удобства, можно использовать public void init()
.
Откуда в этом случае берется экземпляр типа ServletConfig
?
UPD: Можно поставить вопрос по-другому.
За создание экземпляра ServletConfig
отвечает контейнер
. Тогда почему при init(ServletConfig config)
он не создает этот экземляр, а при init()
создает?
UPD2: Когда какой метод лучше использовать?
Как мне кажется, метод javax.servlet.GenericServlet#init()
существует только для того, чтобы его переопределять. При этом он не абстрактный для того, чтобы сделать переопределение необязательным.
Метод javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
и так вызывает внутри себя метод init(), поэтому стоит пользоваться только методом с аргументом javax.servlet.ServletConfig
, но переопределять для дополнительной логики стоит метод init()
без аргументов.
В интерфейсе Servlet определен метод init(ServletConfig config)
. Изначально только его реализовывал GenericServlet
. При создании объекта ServletConfig
, контейнер сервлетов вызывает init(ServletConfig config)
. Поэтому при переопределении, если не вызывать первой строкой super.init(config)
, объект конфига не будет проинициализирован. Позже в GenericServlet
добавили перегруженный метод init()
. Это сделано для того, чтобы не приходилось постоянно вызывать первой строкой super.init(config)
, вообщем-то для удобства. А поскольку в этом случае init(ServletConfig config)
не переопределен, контейнер сделает своё дело корректно - дернет унаследованный init(ServletConfig config)
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Написал бота на Java для DiscordПрограмму пока запускаю через компилятор со своего компьютера
Бьюсь с ошибками запуска webapp и получаю такой stack:
Есть ли в Java что-то похожее на БСП от 1СВ кратце про БСП
Изучаю JAVA и столкнулся с проблемойМне нужно отправить GET запрос на сервер и скачать файл