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