Создает ли контейнер сервлета объект ServletConfig, если нет параметров инициализации?

#java #servlets #servletconfig

#java #сервлеты #servletconfig

Вопрос:

Я знаю, что когда контейнер Servlet создает экземпляр объекта Servlet, он также создает соответствующий объект ServletConfig, где он хранит все параметры инициализации для этого сервлета (которые мы можем позже извлечь через servlet с помощью .getServletConfig().getInitParameter(..)

Мой вопрос в том, что происходит, когда у нас нет никаких параметров инициализации в элементе servlet? по-прежнему ли контейнер создает ServletConfig без параметров инициализации? ( .getSevletConfig() не возвращает null, поэтому я не уверен, создается ли ServletConfig во время выполнения при вызове этого метода, или контейнер все еще создает этот объект без параметров инициализации) или в этом случае контейнер не создает объект ServletConfig? если это так, зачем нам может понадобиться этот объект ServletConfig?

Комментарии:

1. Итак, вы спрашиваете, getSevletConfig() всегда ли будет создаваться новый экземпляр ServletConfig , если нет параметров инициализации?

2. Ну, если контейнер не создает — тогда да, это вопрос, и зачем нам может понадобиться этот объект ServletConfig в этом случае .. но кто знает, может быть, контейнер создает этот объект при запуске контекста.

3. По крайней мере, tomcat создает только один такой объект для каждого сервлета: org/apache/catalina/core/StandardWrapper.java:124 (tomcat 8.5)

Ответ №1:

ServletConfig Содержит не только параметры инициализации, но также ссылку на ServletContext и имя сервлета, поэтому это имеет смысл, даже если параметр инициализации не был указан.

Комментарии:

1. Но главной целью этого является именно параметр инициализации .. как утверждается в нескольких книгах. Итак, чтобы ответить на вопрос: контейнер все еще создает его при запуске .. верно?

2. Конечно, при запуске.