#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. Конечно, при запуске.