Ответ 1
Ответ: Да, вы можете.
Хорошо, кроме комментария JB Nizet вот несколько предложений.
1) Добавили ли вы параметры инициализации во время работы веб-контейнера/сервера приложений?
Цитата из "Head First Servlets & JSP: передача экзамена для разработчиков веб-компонентов Sun Certified":
Параметры init сервлета читаются только ONCE - когда контейнер инициализирует сервлет...
Когда контейнер создает сервлет, он считывает DD и создает пары имя/значение для ServletConfig. Контейнер никогда не читает параметры init снова! Как только параметры находятся в ServletConfig, они не будут прочитаны снова до тех пор, пока вы не перераспределите сервлет.
2) Доступны два типа параметров инициализации. Другая цитата из "Head First Servlets и JSP" (акцент мой):
Существуют параметры контекста init (определенные в элементе
<context-param>
) и параметры инициализации сервлета (определенные в элементе<init-param>
). Они оба называются параметрами init, хотя они определены в разных элементах.
Параметры контекста init доступны для любого сервлета или JSP, которые являются частью текущего веб-приложения.
Параметры инициализации сервлета доступны только для сервлета, для которого был настроен
<init-param>
.Параметры контекстного контекста определяются внутри элемента
<web-app>
.Параметры инициализации
<servlet>
определяются в элементе<servlet>
для каждого конкретного сервлета.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>Servlet testing app</display-name>
<!-- This is a context init parameter -->
<context-param>
<param-name>email</param-name>
<param-value>[email protected]</param-value>
</context-param>
<servlet>
<servlet-name>Info Servlet</servlet-name>
<servlet-class>com.example.InfoServlet</servlet-class>
<!-- This is a servlet init parameter -->
<init-param>
<param-name>name</param-name>
<param-value>John Doe</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Info Servlet</servlet-name>
<url-pattern>/test/ShowInfo.do</url-pattern>
</servlet-mapping>
</web-app>
- Доступ к параметру init контекста в сервлете:
getServlet Context().getInitParameter("email");
- Доступ к параметру init сервлета в сервлет, для которого он был определен в дескрипторе развертывания:
getServlet Config().getInitParameter("name");
Альтернативный способ получения параметра init сервлета - использовать метод, определенный в абстрактном классе GenericServlet: public String getInitParameter(String name);
Этот метод предоставляется для удобства. Он получает значение именованного параметра из объекта ServletConfig сервлета.
Также существует метод Enumeration<String> getInitParameterNames()
для ServletContext и ServletConfig для получения всех параметров init.