Элементы 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 с разными значениями, а затем распечатайте их в своем сервлете.