Бесплатный курс по Java: от основ до продвинутого уровня
Обработка дынных формы в Spring MVC, передача данных в Model
Давайте создадим приложение в котором:
Пользователь вводит какие-то данные в html форму
отправляет их в обработчик
этот обработчик принимает эти данные и перенаправляет пользователя на другую страницу, при этом отправляя пользователю некоторые данные на эту страницу.
Для начала, нужно создать страницу формы через которую пользователь будет отправлять данные в обработчик и страницу на которую этот обработчик будет перенаправлять пользователя и на которую этот обработчик будет отправлять данные.
Страница формы очень простая. Она передает параметр username, содержащий введенные данные пользователем в текстовое поле, в обработчик по пути /FormProcessingController имя которого указывается в action. Передача происходит get запросом.
Страница с формой:
Auth Form
Теперь необходимо создать два обработчика. Один нужен просто чтобы перейти на страницу с формой, другой будет принимать данные этой формы и перенаправлять на другую страницу.
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.
Как мы помним, параметр видно в адресной строке, потому что совершался get запрос, но желательно передавать post запрос, чтобы параметра не было видно в адресной строке.
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. Примеры проверки данных, обработка ошибок и кастомизация сообщений.