Подтвердить что ты не робот

Разница b/w <контекст-параметp> и <init-param>

Элементы DD <context-param> и <init-param> оба могут быть получены методом getInitParameter() в коде сервлета.

Теперь вопрос в том, как он различает <context-param> и <init-param>?

4b9b3361

Ответ 1

Сервлет параметры init предназначены только для одного сервлета. Ничто из этого сервлета не может получить доступ к этому. Он объявлен внутри тега <servlet> дескриптора развертывания, с другой стороны параметр контекста init предназначен для всего веб-приложения. Любой сервлет или JSP в этом веб-приложении может получить доступ к параметру контекста контекста. Контекстные параметры объявляются в теге <context-param> непосредственно внутри тега <web-app>.

Методы доступа к параметру контекста init:

getServletContext().getInitParameter("name"); 

тогда как метод доступа к параметру инициализации сервлета равен

getServletConfig().getInitParameter("name");

Ответ 2

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