Топ-100Обработка дынных формы в Spring MVC, передача данных в Model - CodOrbits
LogoCodOrbits

Раздел: Spring MVC

Раздел расскажет о Spring MVC — компоненте Spring для разработки веб-приложений с использованием архитектуры MVC.

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

Обработка дынных формы в Spring MVC, передача данных в Model

Last updated: 10 мая 2025 г.

Давайте создадим приложение в котором:

  1. Пользователь вводит какие-то данные в html форму
  2. отправляет их в обработчик
  3. этот обработчик принимает эти данные и перенаправляет пользователя на другую страницу, при этом отправляя пользователю некоторые данные на эту страницу.

Для начала, нужно создать страницу формы через которую пользователь будет отправлять данные в обработчик и страницу на которую этот обработчик будет перенаправлять пользователя и на которую этот обработчик будет отправлять данные.

Страница формы очень простая. Она передает параметр 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.

Search Icon

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


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

Специальный тег Form в Spring

18
мин.

Similar Articles Icon
Divider

Теги Spring Form: Select, Radio, Checkbox

19
мин.

Similar Articles Icon
Divider

Валидация форм в Spring MVC

19
мин.

Similar Articles Icon