Различие ч / б <context-param> и <init-param>

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

Теперь вопрос в том, как это дифференцировать <context-param> а также <init-param>?

2 ответа

Решение

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

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

getServletContext().getInitParameter("name"); 

тогда как метод для доступа к параметру init сервлета

getServletConfig().getInitParameter("name");

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

Другие вопросы по тегам