Элементы DD <context-param>
и <init-param>
оба могут быть получены методом getInitParameter()
в коде сервлета.
Теперь вопрос в том, как он различает <context-param>
и <init-param>
?
Элементы DD <context-param>
и <init-param>
оба могут быть получены методом getInitParameter()
в коде сервлета.
Теперь вопрос в том, как он различает <context-param>
и <init-param>
?
Сервлет параметры init предназначены только для одного сервлета. Ничто из этого сервлета не может получить доступ к этому. Он объявлен внутри тега <servlet>
дескриптора развертывания, с другой стороны параметр контекста init предназначен для всего веб-приложения. Любой сервлет или JSP в этом веб-приложении может получить доступ к параметру контекста контекста. Контекстные параметры объявляются в теге <context-param>
непосредственно внутри тега <web-app>
.
Методы доступа к параметру контекста init:
getServletContext().getInitParameter("name");
тогда как метод доступа к параметру инициализации сервлета равен
getServletConfig().getInitParameter("name");
Как объясняется Adeel Ansari, здесь, это зависит от того, какой объект вы вызываете метод getInitParameter()
в коде сервлета.
Все сервлеты распространяются и, следовательно, являются экземплярами GenericServlet
.
.
Элементы DD <context-param>
могут быть получены:
ServletContext context = this.getServletContext();
String paramValue = context.getInitParamter("paramName");
.
Элементы DD <init-param>
оба могут быть получены:
ServletConfig config = this.getServletConfig();
String paramValue = config.getInitParamter("paramName");
Также обратите внимание, что поскольку GenericServlet
класс реализует интерфейс ServletConfig
, ваш класс сервлета также является ServletConfig (подразумевает this = this.getServletConfig()
). Следовательно, вы также можете получить элементы DD <init-param>
напрямую:
String paramValue = this.getInitParamter("paramName");
.
Вы можете попробовать это, имея одинаковое имя параметра в обоих элементах DD с разными значениями, а затем распечатайте их в своем сервлете.