Spring MVC — паттерн PRG (Post/Redirect/Get)

Краткое описание шаблона веб проектирования PRG можно посмотреть здесь.

Перейдем к реализации PRG в Spring MVC.

В спринге шаблон можно реализовать несколькими способами. Для начала самый простой.

Здесь показан пример проверки данных указанных в форме логин-пароль и дальнейшее перенаправление на другую страницу. После нажатия на кнопку Submit в форме выполняется  action="secondPage" , который попадает в первый метод. С помощью аннотации  @Valid идет проверка данных и результат передается в  bindingResult . Если ошибок нет, то возвращается значение с перенаправлением на страницу  "redirect:/mainpage" . Затем мы попадаем в метод

Где мы получаем указание перейти на страницу «main.jsp».

Часто возникает вопрос как определить текущая страница получилась путем перенаправления или пользователь открыл её сам. Для этого в Spring MVC предусмотрен интерфейс

у которого есть методы добавления «флэш-аттрибутов». В отличии от других атрибутов перенаправления, которые указываются в конце целевого URL, «flash attributes» сохраняются в HTTP сессии (и следовательно не отображаются в URL). После обновления страницы они будут удалены.

Достать их можно с помощью такого выражения

Map<String, ?> map = RequestContextUtils.getInputFlashMap(request)

Map будет null, если на эту страницу мы были не перенаправлены.

Вторая реализация pattern’а PRG с помощью Spring MVC выглядит интереснее и позволяет использовать больше параметров.

Здесь использован класс

и в качестве примера его метод  void setStatusCode(HttpStatus statusCode) с указанием HttpStatus. Такая реализация дает больше возможностей и при этом совсем не сложная.

Share Button
12
11565 Total Views 1 Views Today

One thought on “Spring MVC — паттерн PRG (Post/Redirect/Get)

  1. Роман:

    В примерах переменная object не определена.

Добавить комментарий