Переадресация и пересылка (redirect & forward) в Spring MVC
Переадресация и пересылка (redirect & forward) в Spring MVC
Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5
Используемые технологии и библиотеки
- Spring MVC 4.2.4.Release
- Maven 3.2.5
- IntelliJ IDEA 15.0.2
1. Описание задачи
Написать контроллер с использованием префиксов redirect: и forward:.
2. Пример использования redirect, forward
Эта тема не потянула на статью в стиле предыдущих глав, где есть описание проекта, конфигурационных файлов и т.д. Поэтому здесь приведу немножко кода и всё.
Для начала важно понимать паттерн Post-Redirect-Get и зачем он нужен. На сайте есть две статьи с описанием этого шаблона проектирования — раз, два.
Т.к. код из проекта, в общем, такой же как и в статье по ссылке выше, то просто приведу его как есть.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package ru.javastudy.mvcHtml5Angular.mvc.redirect; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletRequest; /** * Created for JavaStudy.ru on 03.03.2016. */ @Controller public class RedirectController { //redirect to external URL @RequestMapping(value = "/redirectExample", method = RequestMethod.GET) public String redirectExample(HttpServletRequest request) { //request.getScheme() - if you don't know where was the request sent: http, https, ftp.. return "redirect:" + request.getScheme() +"://javastudy.ru"; } } |
Таким образом в проект был добавлен обычный контроллер, который выполняет переадресацию на сайт javastudy.ru. Обратите внимание на конкатенацию с request.getScheme(). Это рекомендуется делать, если вы не знаете какой протокол используется (http, https, ftp и т.д.).
Если вам необходимо сделать проброс, а не переадресацию, то нужно просто использовать префикс forward: вместо redirect:.
Исходные коды
MVC_AngularJS_Html5 full project — полный проект Spring MVC + AngularJS + Bootstrap + HTML5.
11. Redirect example — код для этой части