3

## 3.7_(4.6) Параметры инициализации сервлетов

### Общие параметры

Элемент <context-param> в файле web.xml задает параметр, которым инициализируются сервлеты. Внутри этого элемента с помощью элемента <param-name> задается имя параметра, а с помощью элемента <param-value> - значение параметра.

Например, определим следующий файл web.xml:

`<?xml` `version="1.0"` `encoding="UTF-8"?>`

`<web-app` `xmlns``="``http://xmlns.jcp.org/xml/ns/javaee``"`

`xmlns:xsi="``http://www.w3.org/2001/XMLSchema-instance``"`

`xsi:schemaLocation="``http://xmlns.jcp.org/xml/ns/javaee`

`` `http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd``"`

`version="4.0">`

``

`<context-param>`

`<param-name>message</param-name>`

`<param-value>Hello Servlets</param-value>`

`` `</context-param>`

``

`</web-app>`

В данном случае параметр называется "message" и имеет значение "Hello Servlets". Этот параметр доступен всем сервлетам в приложении.

Для получения параметра внутри сервлета необходимо обратиться к контексту сервлета. Для его получения внутри класса сервлета определен метод getServletContext(). Он возвращает объект ServletContext. Затем у этого объекта вызывается метод getInitParameter(), в который передается название параметра инициализации.

Например, получим выше определенный параметр в сервлете:

`import` `java.io.IOException``;`

`import` `java.io.PrintWriter``;`

`import` `javax.servlet.ServletException``;`

`import` `javax.servlet.annotation.WebServlet``;`

`import` `javax.servlet.http.HttpServlet``;`

`import` `javax.servlet.http.HttpServletRequest``;`

`import` `javax.servlet.http.HttpServletResponse``;`

``

`@WebServlet("/hello")`

`public` `class` `HelloServlet` `extends` `HttpServlet``{`

``

`protected` `void` `doGet``(HttpServletRequest request, HttpServletResponse response)`

`throws` `ServletException``, IOException {`

`String message = getServletContext().getInitParameter("message");`

`response.setContentType("text/html");`

`PrintWriter writer = response.getWriter();`

`try` `{`

`writer.println("<h2>"` `+ message + "</h2>");`

`` `} finally` `{`

`writer.close();`

`}`

`}`

`}`

Стоит отметить, что этот параметр будет доступен для всех сервлетов в приложении. Соответственно если мы изменим в web.xml значение параметра, то оно изменится для всех сервлетов.

### Параметры для отдельного сервлета

Кроме определения общих для всех сервлетов параметров, мы можем определить параметры непосредственно для конкретного сервлета. Для этого внутри элемента <servlet> определяется элемент <init-param>

Например, изменим web.xml следующим образом:

`<?xml` `version="1.0"` `encoding="UTF-8"?>`

`<web-app` `xmlns``="``http://xmlns.jcp.org/xml/ns/javaee``"`

`xmlns:xsi="``http://www.w3.org/2001/XMLSchema-instance``"`

`xsi:schemaLocation="``http://xmlns.jcp.org/xml/ns/javaee`

`` `http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd``"`

`version="4.0">`

`<servlet>`

`<servlet-name>HelloServlet</servlet-name>`

`<servlet-class>HelloServlet</servlet-class>`

`<init-param>`

`<param-name>message</param-name>`

`<param-value>Hello Servlets</param-value>`

`</init-param>`

`</servlet>`

`</web-app>`

Здесь также задан параметр message со значением "Hello Servlets". Чтобы получить этот параметр в классе сервлете, необходимо использовать метод getServletConfig(), который возвращает объект ServletConfig. У него затем вызывается метод getInitParameter(), в который передается имя параметра. Например:

`import` `java.io.IOException``;`

`import` `java.io.PrintWriter``;`

`import` `javax.servlet.ServletException``;`

`import` `javax.servlet.annotation.WebServlet``;`

`import` `javax.servlet.http.HttpServlet``;`

`import` `javax.servlet.http.HttpServletRequest``;`

`import` `javax.servlet.http.HttpServletResponse``;`

``

`@WebServlet("/hello")`

`public` `class` `HelloServlet` `extends` `HttpServlet``{`

``

`protected` `void` `doGet``(HttpServletRequest request, HttpServletResponse response)`

`throws` `ServletException``, IOException {`

`String message = getServletConfig().getInitParameter("message");`

`response.setContentType("text/html");`

`PrintWriter writer = response.getWriter();`

`try` `{`

`writer.println("<h2>"` `+ message + "</h2>");`

`` `} finally` `{`

`writer.close();`

`}`

`}`

`}`

Назад Содержание Вперед