Топ-100Интерфейс ServletConfig - CodOrbits
LogoCodOrbits

Раздел: Servlets

Познакомьтесь с сервлетами Java: создание динамических веб-страниц и работа с HTTP-запросами и ответами.

Все разделы
Иконка Servlets

Интерфейс ServletConfig

Last updated: 10 мая 2025 г.

ServletConfig – можно сказать, что то же самое, что и ServletContext, но в отличии от него хранит данные касающиеся только конкретного сервлета.

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

В основном, он нужен для извлечения параметров инициализации.

Параметры инициализации (прописываются в web.xml) – это какие-то данные, которые доступны сервлету или сервлетам сразу с начала его работы.


Определение параметров инициализации в web.xml

В web.xml можно определить параметры инициализации как на уровне контекста, так и только для конкретного сервлета.  

Web.xml:

1<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
4 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
5 version="4.0"
6 metadata-complete="false">
7
8 <servlet>
9  <servlet-name>MyServlet</servlet-name>
10  <!-- Указываем имя класса первого сервлета -->
11  <servlet-class>MyServlet</servlet-class>
12
13  <!-- параметр инициализации уровня
14  конфигa сервлета Myservlet -->
15  <init-param>
16   <param-name>name</param-name>
17   <param-value>firstParamName</param-value>
18  </init-param>
19 </servlet>
20
21 <servlet>
22  <servlet-name>MyServlet1</servlet-name>
23  <!-- Указываем имя класса второго сервлета -->
24  <servlet-class>MyServlet1</servlet-class>
25
26  <!-- параметр инициализации уровня
27  конфигa сервлета Myservlet1 -->
28  <init-param>
29   <param-name>name</param-name>
30   <param-value>secondParamName</param-value>
31  </init-param>
32 </servlet>
33
34 <!-- параметр инициализации уровня контекста -->
35 <context-param>
36  <param-name>name</param-name>
37  <param-value>commonName</param-value>
38 </context-param>
39
40</web-app>

Как можно увидеть, мы задали три параметра инициализации.

Задали один общий для всех сервлетов параметр с именем name и задали параметры с именем name, доступные только конкретному сервлету. Эти все параметры потом можно будет достать с помощью getInitParameter().


Параметры инициализации в первом сервлете MyServlet.

С помощью getInitParameter извлекаем параметры инициализации, которые были определены в web.xml.

1import java.util.*;
2import java.io.IOException;
3import java.io.PrintWriter;
4
5import javax.servlet.ServletExcept1on;
6import javax.servlet.http.HttpServlet;
7import javax.servlet.http.HttpServletRequest;
8import javax.servlet.http.HttpServletResponse;
9import javax.servlet.ServletContext;
10import javax.servlet.ServletConfig;
11import javax.servlet.annotation.*;
12
13@WebServlet("/configservlet")
14public class MyServlet extends HttpServlet{
15    protected void doGet(HttpServletRequest req,
16                         HttpServletResponse resp)
17        throws ServletException, IOException{
18
19        PrintWriter pw = resp.getWriter();
20
21        //получаем контекст всего приложения
22        ServletContext scont = getServletContext();
23        //получаем значение параметра name контекста
24        //(будет commonName)
25        pw.println(scont.getInitParameter("name"));
26        //получаем конфиг сервлета
27        ServletConfig sconf = getServletConfig();
28        //получаем значение параметра name конфига
29        //(будет firstParamName)
30        pw.println(sconf.getInitParameter("name"));
31    }
32}

Параметры инициализации во втором сервлете MyServlet1.

С помощью getInitParameter извлекаем параметры инициализации во втором сервлете, которые были определены в web.xml.

1import java.io.IOException;
2import java.io.PrintWriter;
3
4import javax.servlet.ServletException;
5import javax.servlet.http.HttpServlet;
6import javax.servlet.http.HttpServletRequest;
7import javax.servlet.http.HttpServletResponse;
8import javax.servlet.annotation.*;
9import javax.servlet.ServletContext;
10import javax.servlet.ServletConfig;
11import javax.servlet.http.Cookie;
12
13@WebServlet("/myservlet")
14public class MyServlet1 extends HttpServlet {
15    protected void doGet(HttpServletRequest req,
16                         HttpServletResponse resp)
17            throws ServletException, IOException{
18        PrintWriter pw = resp.getWriter();
19
20        //получаем контекст всего приложения
21        ServletContext scont = getServletContext();
22        //получаем значение параметра name контекста
23        //(также как и в другом сервлете будет CommonName)
24        pw.println(scont.getInitParameter("name"));
25
26        //получаем конфиг сервлета
27        ServletConfig sconf = getServletConfig();
28        //получаем значение параметра name конфига
29        //(будет secondParamName)
30        pw.println(sconf.getInitParameter("name"));
31    }
32}

Проверка работы сервлетов

Скомпилируем файлы сервлетов и в адресной строке перейдем по адресу /configservlet.

Видим, что клиенту был отправлен параметр инициализации уровня контекста и параметр инициализации, который принадлежит только MyServlet и нигде больше не виден.

Если перейдем по пути /myservlet, то можно увидеть параметр инициализации уровня контекста (это тот же самый параметр, что и на картинке выше), который доступен всем сервлетам и параметр инициализации, который принадлежит только сервлету MyServlet1 и нигде больше не виден.


Следующие уроки

encodeURL и encodeRedirectURL в Java сервлетах

16
мин.

Similar Articles Icon
Divider

Синхронизация в Java сервлете

12
мин.

Similar Articles Icon
Divider

Что такое Filter в Java сервлетах

14
мин.

Similar Articles Icon