Обработка дынных формы в Spring MVC, передача данных в Model
Last updated: 10 мая 2025 г.Давайте создадим приложение в котором:
- Пользователь вводит какие-то данные в html форму
- отправляет их в обработчик
- этот обработчик принимает эти данные и перенаправляет пользователя на другую страницу, при этом отправляя пользователю некоторые данные на эту страницу.
Для начала, нужно создать страницу формы через которую пользователь будет отправлять данные в обработчик и страницу на которую этот обработчик будет перенаправлять пользователя и на которую этот обработчик будет отправлять данные.

Страница формы очень простая. Она передает параметр username
, содержащий введенные данные пользователем в текстовое поле, в обработчик по пути /FormProcessingController
имя которого указывается в action
. Передача происходит get запросом.
Страница с формой:
1<html>
2<head>
3 <title>Auth Form</title>
4</head>
5<body>
6 <form action="FormProcessingController" method="get">
7 username: <input type="text" name="username"/> <br/>
8 <input type="submit" value="submit"/> <br/>
9 </form>
10</body>
11</html>
Теперь необходимо создать два обработчика. Один нужен просто чтобы перейти на страницу с формой, другой будет принимать данные этой формы и перенаправлять на другую страницу.
1package classes;
2
3import javax.servlet.http.HttpServletRequest;
4
5@Controller
6@RequestMapping("/FirstController")
7public class MVCcontroller{
8
9 @RequestMapping("/FirstJSP")
10 public String FirstJSP() {
11 return "JSPpage"; //имя jsp
12 }
13
14 @RequestMapping("/SecondJSP")
15 public String SecondJSP() {
16 return "JSPpage1"; //имя jsp
17 }
18
19 //FormPage обработчик нужен просто чтобы
20 //перейти на страницу на которой будет форма,
21 //в которую клиент сможет вводить данные
22 @RequestMapping("/FormPage")
23 public String FormPage() {
24 return "FormPage"; //имя формы
25 }
26
27 //Название обработчика ниже как мы помним
28 //было указано в теге action у формы.
29 //Этому обработчику будет передаваться параметр
30 //и он будет перенаправлять на вторую страницу
31 //на которой будет выводиться переданный
32 //через форму параметр.
33 @RequestMapping("/FormProcessingController")
34 //метод-обработчик может иметь разные параметры
35 //например HttpServletRequest req – это тот самый req
36 //что и в сервлетах и работать с ним мы можем так же
37 //как и в сервлетах. Будем извлекать из него параметры.
38 //а в Model можем передавать данные как
39 //в response в сервлете. То есть как и в response
40 //в сервлетах можем положить в model аттрибут, который
41 //будет доступен на странице на которую этот
42 //обработчик перенаправляет.
43 public String FormProcessingController(
44 HttpServletRequest req, Model model) {
45 //Ниже всем известный из сервлетов getParameter.
46 //Получаем имя параметра переданный сюда из формы
47 //и как в response создаем аттрибут в модели
48 //значение которого будет принятый параметр
49 //плюс дополнительная строка entered!.
50 model.addAttribute("responseMsg",
51 (req.getParameter("username")+" entered!"));
52 //Ниже имя jsp на которую отправляется
53 //параметр в аттрибуте модели
54 return "FormProcessingPage";
55 }
56}
На странице на которую перенаправляет обработчик просто выведем с помощью EL выражения положенный в модель аттрибут. Раньше таким образом мы уже выводили аттрибуты переданные из сервлета в resp.
1<%@ page isELIgnored="false" %>
2<html>
3<head>
4 <title>Form</title>
5</head>
6<body>
7 <h2>${resposeMsg}</h2>
8</body>
9</html>
Перейдем на страницу с формой через обработчик по пути /FormPage
.

Введем в поле текст и нажмем submit
.

Видим, что обработчик успешно перенаправил на вторую страницу и параметр был успешно передан этим обработчиком на эту страницу.
Можно увидеть в адресной строке переданный параметр username=Mike
.
Как мы помним, параметр видно в адресной строке, потому что совершался get запрос, но желательно передавать post запрос, чтобы параметра не было видно в адресной строке.
Следующие уроки
Специальный тег Form в Spring
18
мин.
Теги Spring Form: Select, Radio, Checkbox
19
мин.
Валидация форм в Spring MVC
19
мин.