Топ-100Работа с HTTP-запросами: GET и POST - CodOrbits
LogoCodOrbits

Раздел: Servlets

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

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

Работа с HTTP-запросами: GET и POST

Last updated: 9 мая 2025 г.

Для начала рассмотрим GET-запрос.

GET-запросы позволяют клиенту передавать параметры через адресную строку браузера. Эти параметры затем можно легко извлечь из объекта HttpServletRequest в сервлете.

Представьте, что клиент вводит в адресной строке следующее:

localhost:8080\helloservlet\getpostservlet\?param1=Hello&param2=World

Здесь param1 имеет значение “Hello”, а param2“World”.

С помощью различных методов эти параметры можно перехватывать, например, с помощью метода getParameter получим значения параметров и запишем в строки.    

Пример программы:

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.*;
9
10@WebServlet("/getpostservlet")
11public class MyServlet extends HttpServlet{
12    protected void doGet(HttpServletRequest req,
13                         HttpServletResponse resp)
14        throws ServletException, IOException {
15        //С помощью различных методов эти параметры
16        //можно перехватывать например с помощью
17        //метода getParameter получим значения
18        //параметров и запишем в строки.
19        String par1 = req.getParameter("param1");
20        String par2 = req.getParameter("param2");
21        PrintWriter pw = resp.getWriter();
22        //На странице клиента выведутся
23        //значения параметров.
24        pw.println(par1);
25        pw.println(par2);
26        //Также есть другие методы для удобства работы
27        //с параметрами например getParameterValues,
28        //getParameterNames ….
29        //Также мы можем получить некоторую информацию 
30        //о запросе клиента с помощью методов ниже.
31        //например полный URL.
32        pw.println(req.getRequestURL());
33        //или получим IP хоста
34        pw.println(req.getRemoteHost());
35    }
36}

Скомпилируем файл и в адресной строке передадим параметры сервлету по адресу /getpostservlet. Он должен отправить их обратно клиенту в браузер.

Как видим, сервлет успешно вернул клиенту параметры. Также сервлет отправил клиенту адрес и ip хоста, как видим.


Get запрос с помощью формы

Пусть сервлет отправляет форму с двумя полями и кнопкой отправки пользователю в браузер.

Если он в нее что-то введет то данные отправятся в наш сервлет по методу GET (в форме ниже можно увидеть method=’get’).

И таким образом когда пользователь введет данные в форму и нажмет кнопку для отправки данных формы, то в адресной строке появиться идентичная строка той, что была в предыдущем примере когда мы вводили параметры в ссылку вручную, только значения параметров в адресной строке будут взяты из текстовых полей формы:

localhost:8080\helloservlet\getpostservlet\?param1=(то, что ввел в текстовое поле пользователь)&param2=(то, что ввел в текстовое поле пользователь)  

Пример программы:

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.*;
9
10@WebServlet("/getpostservlet")
11public class MyServlet extends HttpServlet{
12    protected void doGet(HttpServletRequest req,
13                         HttpServletResponse resp)
14                         throws ServletException, IOException {
15        String par1 = req.getParameter("param1");
16        String par2 = req.getParameter("param2");
17        PrintWriter pw = resp.getWriter();
18        //Отправляем клиенту, который обращается
19        //к этому сервлету форму чтобы он мог ввести
20        //туда параметры в адресной строке.
21        pw.println("<html>" +
22                   "<head></head>" +
23                   "<body>" +
24                   "<form action='getpostservlet' method='get'>" +
25                   "<input type='text' name='param1'/>" +
26                   "<input type='text' name='param2'/>" +
27                   "<input type='submit' name='submit'/>" +
28                   "</form>" +
29                   "</body>" +
30                   "</html>");
31        //Отправим присланные параметры обратно клиенту
32        pw.println(par1);
33        pw.println(par2);
34    }
35}

Скомпилируем файл сервлета, перейдем по адресу /getpostservlet. Как видим, сервлет отправил клиенту форму и он теперь может вводить в поля параметры param1 и param2.

Когда пользователь нажимает кнопку, введенные им значения параметров param1 и param2 отправляются в сервлет.

Как видим, в адресной строке URL идентичен тому, что мы вводили руками в предидущем примере, только здесь мы использовали форму для отправки параметров.

Также видим Hello World. То есть сервлет вернул клиенту параметры, которые клиент отправил в сервлет через форму.


Post запрос с помощью формы

Но часто на безопасно передавать параметры методом get, так как, как мы видели, они выводятся в адресной строке.

Чтобы они не выводились в адресной строке следует передавать параметры из формы методом POST.

Пример программы:

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.*;
9
10@WebServlet("/getpostservlet")
11public class MyServlet extends HttpServlet {
12    // Когда пользователь обращается к сервлету по адресу
13    // http://localhost:8080/helloservlet/getpostservlet
14    // он совершает GET-запрос. Поэтому отправлять форму
15    // клиенту будем в doGet.
16    
17    protected void doGet(HttpServletRequest req,
18                         HttpServletResponse resp)
19                         throws ServletException, IOException {
20        PrintWriter pw = resp.getWriter();
21        // Отправляем клиенту, который обращается
22        // к этому сервлету, форму, чтобы он мог ввести
23        // нужные параметры в адресной строке.
24        // Но в этот раз эта форма отправляет POST-запрос.
25        
26        pw.println("<html>" +
27                   "<head></head>" +
28                   "<body>" +
29                   "<form action='getpostservlet' method='post'>" +
30                   "<input type='text' name='param1'/>" +
31                   "<input type='text' name='param2'/>" +
32                   "<input type='submit' name='submit'/>" +
33                   "</form>" +
34                   "</body>" +
35                   "</html>");
36    }
37
38    // А форма, как можно увидеть выше, отправляет POST-запрос,
39    // поэтому принимать параметры и отправлять их обратно 
40    // клиенту будем в doPost.
41    
42    protected void doPost(HttpServletRequest req,
43                          HttpServletResponse resp)
44                          throws ServletException, IOException {
45        String par1 = req.getParameter("param1");
46        String par2 = req.getParameter("param2");
47        PrintWriter pw = resp.getWriter();
48        // На странице клиента выведутся значения
49        // параметров, при этом у клиента в адресной
50        // строке ничего не будет.
51        
52        pw.println(par1);
53        pw.println(par2);
54    }
55}

Скомпилируем файл сервлета, перейдем по адресу /getpostservlet. Как видим, сервлет отправил клиенту форму и он теперь может вводить в поля параметры param1 и param2.

Когда пользователь нажимает кнопку, введенные им значения параметров param1 и param2 отправляются в сервлет.

Видим, что сервлет вернул клиенту параметры, которые он отправлял в сервлет.

Также видим самое главное, что параметров в адресной строке нет, они скрыты благодаря методу Post.


Дополнительные материалы

Additional Material Icon

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

Redirect, forward, include в сервлетах

20
мин.

Similar Articles Icon
Divider

Работа с Cookies в Java

14
мин.

Similar Articles Icon
Divider

Работа с сессиями (Session) в Java

14
мин.

Similar Articles Icon