Обзор
Эта статья будет посвящена реализации перенаправлений весной и обсуждать причины каждой стратегии.
Зачем перенаправить?
Давайте сначала рассмотрим, почему вам может потребоваться перенаправление в своем весеннем приложении.
Конечно, есть много возможных примеров и причин. Простым может быть данные о форме, вокруг двойного подчинения проблемы или просто делегирование потока выполнения другому методу контроллера.
Следует отметить, что типичный шаблон Post/Redirect/Get не решает проблему с двойным коммит - проблема обновления страницы до завершения первоначального коммита может привести к двойному коммиту.
Перенаправить с помощью redirectView
Давайте начнем с этого простого метода - давайте приведем пример напрямую:
За redirectview будет увольнять httpservletresponse.sendredirect () - это выполнит фактический перенаправление.
Обратите внимание, как мы вводим перенаправленные свойства в метод здесь - структура делает эту часть тяжелой работы, позволяя нам взаимодействовать с этими свойствами.
Мы добавляем атрибут в модель redirectattributes - выставляем его как параметр http -запроса. Модель содержит объекты - обычно строки или объекты, которые могут быть преобразованы в строки.
Теперь давайте проверим нашу функцию перенаправления - используйте простую команду Curl, чтобы помочь с ней:
Результатом будет:
Перенаправление с использованием перенаправления: префикс
Предыдущий метод использует redirectView, потому что он не является оптимальным по некоторым причинам.
Во -первых, теперь мы связаны с Spring API, потому что мы используем RedirectView непосредственно в нашем коде.
Во -вторых, с самого начала нам нужно знать, что при реализации операции контроллера ее результаты всегда будут перенаправлены, но это не всегда так.
Лучшим вариантом является использование перенаправления: префикс - имя просмотра перенаправления впрыскивается в контроллер, как и другие имена логических представлений. Контроллер даже не знает, что перенаправление происходит.
Похоже, это:
Когда имя представления возвращается с перенаправлением:, класс urlbasedviewresolver (и все его подклассы) распознает его как особое указание, которое необходимо перенаправить. Остальная часть вида будет рассматриваться как URL -адрес перенаправления.
Здесь есть место, где можно отметить - когда мы используем здесь перенаправление:/redirectedUrl Logical View, мы делаем перенаправление, связанное с текущим контекстом сервлета.
Если вам нужно перенаправить на абсолютный URL, мы можем использовать такое имя, подобное следующему: перенаправление: http: // localhost: 8080/spring-redirect/redirectedurl.
Итак, теперь, когда мы выполняем команду Curl:
Мы немедленно получим перенаправление:
Пырясь с префиксом вперед
Давайте теперь посмотрим, как сделать что -то немного другое - пересылка.
Прежде чем посмотреть на код, давайте посмотрим на быстрое и высокое резюме семантики пересылки и перенаправления:
Перенаправление ответит новым URL, содержащим код ответа 302 и заголовок местоположения; Затем браузер/клиент снова сделает запрос на новый URL -адрес полностью на стороне сервера; Контейнер сервлета направляет тот же запрос на целевой URL; URL в браузере не нужно изменять
Теперь давайте посмотрим на код:
Как redirect:. Внутренне это создает InternalResourceView, которая выполняет операцию requestDispatcher.forward () для нового представления.
Когда мы выполняем команду с Curl:
Мы получим HTTP 405 (не допустимый метод):
В этом случае у нас есть только один запрос, отправленный из браузера/клиента на сторону сервера по сравнению с двумя запросами, которые мы имеем в решении перенаправления. Конечно, свойства, добавленные перенаправлением, не нужны.
Свойства, содержащие redirectattributes
Далее - давайте посмотрим на передачу свойств в перенаправлении - воспользуйтесь преимуществами перенаправления в рамках:
Как упоминалось ранее, мы можем вставить объекты свойства непосредственно в метод, что делает механизм очень простым в использовании.
Также обратите внимание, что мы также добавляем атрибут Flash - это свойство, которое не будет добавлено в URL. Мы можем достичь этого свойства - позже мы можем использовать @modelattribute ("flashattribute") в перенаправленном конечном целевом методе для доступа к атрибуту Flash:
Итак, успешно завершиться - если вам нужно использовать Curl, чтобы проверить функцию:
Мы будем перенаправлены в новое место:
Таким образом, использование redirectattribures вместо ModelMap дает нам возможность делиться некоторыми свойствами только между двумя методами, связанными с операцией перенаправления.
Другая конфигурация без префиксов
Теперь давайте рассмотрим другую конфигурацию - перенаправление без префиксов.
Для достижения этого нам нужно использовать org.springframework.web.servlet.view.xmlviewresolver:
Вместо org.springframework.web.servlet.view.internalResourceViewResolver Мы использовали в нашей предыдущей конфигурации:
Нам также необходимо определить фасоль redirectView в конфигурации:
Теперь мы можем обратиться к этой новой фасоли через идентификатор, чтобы вызвать перенаправление:
Чтобы проверить это, мы снова используем команду Curl:
Результатом будет:
Перенаправить запрос на запрос на почту http
Для таких вариантов использования, как банковские платежи, нам может потребоваться перенаправить запросы на почту HTTP. В зависимости от возвращенного кода состояния HTTP, запрос POST может быть перенаправлен на HTTP GET или POST.
В соответствии со ссылкой на протокол HTTP 1.1, коды состояния 301 (постоянно удаленные) и 302 (найдено) позволяют изменять метод запроса с Post на Get. Спецификация также определяет соответствующие коды состояния 307 (временное перенаправление) и 308 (постоянное перенаправление), которые не позволяют изменять метод запроса с Post на GET.
Теперь давайте посмотрим на код для перенаправления запроса сообщения на другой запрос сообщения:
Теперь давайте используем команду Curl для проверки перенаправленного сообщения:
Нас перенаправляют на адрес назначения:
в заключение
В этой статье представлены три разных способа реализации перенаправлений весной, как обрабатывать/пройти атрибуты при выполнении этих перенаправлений и как обрабатывать перенаправления запросов HTTP Post.
Выше приведено руководство VSPring перенаправление (перенаправление) и связанные с ним проблемы стратегии, введенные вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!