Интерфейс 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
мин.
Синхронизация в Java сервлете
12
мин.
Что такое Filter в Java сервлетах
14
мин.