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

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

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

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

Страница формы очень простая. Она передает параметр username, содержащий введенные данные пользователем в текстовое поле, в обработчик по пути /FormProcessingController имя которого указывается в action. Передача происходит get запросом.

Страница с формой:

Auth Form
username:

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

package classes; import javax.servlet.http.HttpServletRequest; @Controller @RequestMapping(“/FirstController”) public class MVCcontroller{ @RequestMapping(“/FirstJSP”) public String FirstJSP() { return “JSPpage”; //имя jsp } @RequestMapping(“/SecondJSP”) public String SecondJSP() { return “JSPpage1”; //имя jsp } //FormPage обработчик нужен просто чтобы //перейти на страницу на которой будет форма, //в которую клиент сможет вводить данные @RequestMapping(“/FormPage”) public String FormPage() { return “FormPage”; //имя формы } //Название обработчика ниже как мы помним //было указано в теге action у формы. //Этому обработчику будет передаваться параметр //и он будет перенаправлять на вторую страницу //на которой будет выводиться переданный //через форму параметр. @RequestMapping(“/FormProcessingController”) //метод-обработчик может иметь разные параметры //например HttpServletRequest req – это тот самый req //что и в сервлетах и работать с ним мы можем так же //как и в сервлетах. Будем извлекать из него параметры. //а в Model можем передавать данные как //в response в сервлете. То есть как и в response //в сервлетах можем положить в model аттрибут, который //будет доступен на странице на которую этот //обработчик перенаправляет. public String FormProcessingController( HttpServletRequest req, Model model) { //Ниже всем известный из сервлетов getParameter. //Получаем имя параметра переданный сюда из формы //и как в response создаем аттрибут в модели //значение которого будет принятый параметр //плюс дополнительная строка entered!. model.addAttribute(“responseMsg”, (req.getParameter(“username”)+” entered!”)); //Ниже имя jsp на которую отправляется //параметр в аттрибуте модели return “FormProcessingPage”; } }

На странице на которую перенаправляет обработчик просто выведем с помощью EL выражения положенный в модель аттрибут. Раньше таким образом мы уже выводили аттрибуты переданные из сервлета в resp.

<%@ page isELIgnored="false" %> Form

${resposeMsg}

Перейдем на страницу с формой через обработчик по пути /FormPage.

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

Видим, что обработчик успешно перенаправил на вторую страницу и параметр был успешно передан этим обработчиком на эту страницу.

Можно увидеть в адресной строке переданный параметр username=Mike.

Search Icon

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

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

Spring Form Tag: как использовать form:form для прямой привязки полей объекта к HTML-форме. Генерация геттеров/сеттеров в Eclipse и работа с Model в Spring MVC.
Time to read: 18

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

Изучите теги Spring Form: Select, Radio, Checkbox для связывания полей объекта с HTML-формой. Практические примеры работы с form:select, form:radio и form:checkbox в Spring MVC.
Time to read: 19

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

Настройте валидацию форм в Spring MVC с аннотациями @NotNull, @Size, @Min/@Max и @Pattern. Примеры проверки данных, обработка ошибок и кастомизация сообщений.
Time to read: 19