一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring 重定向(Redirect)指南及相關策略問題

Spring 重定向(Redirect)指南及相關策略問題

2021-02-24 14:16dzone Java教程

本文介紹了在Spring中實現重定向的三種不同方法,在執行這些重定向時如何處理/傳遞屬性以及如何處理HTTP POST請求的重定向。關于Spring 重定向(Redirect)指南的相關知識大家參考下本文

概述

本文將重點介紹在 spring 中實現重定向(redirect),并將討論每個策略背后的原因。

為什么要重定向?

讓我們先來考慮在 spring 應用程序中為什么您可能需要做一個重定向的原因。

當然有很多可能的例子和原因。 一個簡單的可能是 post 表單數據,圍繞雙重提交問題,或者只是將執行流委托給另一個控制器方法。

附注一點,典型的 post / redirect / get 模式并不能充分解決雙重提交問題 - 在初始提交完成之前刷新頁面的問題可能仍然會導致雙重提交。

使用  redirectview 重定向

我們從這個簡單的方法開始 - 直接來一個例子:

Spring 重定向(Redirect)指南及相關策略問題

在背后,redirectview 會觸發 httpservletresponse.sendredirect() - 這將執行實際的重定向。

注意這里我們是如何注入重定向屬性到方法里面的 - 由框架完成這部分繁重的工作,讓我們能夠與這些屬性交互。

我們添加 attribute 到模型redirectattributes中 - 將其作為 http 查詢參數(query parameter)暴露。 該模型包含的對象 - 通常是字符串或可以被轉換成字符串的對象。

現在讓我們來測試我們的重定向功能 - 用一個簡單的 curl 命令來幫助實現:

結果將是:

Spring 重定向(Redirect)指南及相關策略問題

使用 redirect: 前綴進行重定向

前面一個方法使用redirectview,因為一些原因它并不是最優的。

首先,我們現在是耦合于spring api的,因為我們在我們的代碼里直接地使用redirectview。
其次,我們需要從一開始就知道,當實現控制器操作的時候,它的結果將總是重定向的,但情況并非總是如此。

更好的選擇是使用redirect:前綴——重定向視圖名稱像其它邏輯視圖名稱一樣被注入到控制器中。控制器甚至不知道重定向正在發生。

它看起來像是這樣的:

Spring 重定向(Redirect)指南及相關策略問題

當視圖名稱跟redirect:一起返回的時候,urlbasedviewresolver類(以及它的所有子類)會將其識別為一個需要進行重定向的特殊指示。視圖名稱剩下的部分會被當作重定向url。

這里有一個地方需要注意——當我們在這里使用redirect:/redirectedurl邏輯視圖的時候,我們正在做一個跟當前servlet上下文相關的重定向。

如果需要重定向到一個絕對url,我們可以使用像這樣的名稱:redirect: http://localhost:8080/spring-redirect/redirectedurl。

所以現在,當我們執行curl命令:

我們會立刻得到一個重定向:

Spring 重定向(Redirect)指南及相關策略問題

使用 forward 前綴轉發

我們現在看看如何做一些略有不同的事——一個轉發。

在看代碼之前,我們先來看一下對轉發與重定向的語義的快速、高層概括:

重定向將以包含302響應碼和location頭的新url進行響應;然后瀏覽器/客戶端將再次向新的url發出請求
轉發完全在服務器端發生; servlet容器將相同的請求轉發到目標url;瀏覽器中的url無須改變

現在我們來看看代碼:

Spring 重定向(Redirect)指南及相關策略問題

與redirect:一樣,forward:前綴將由urlbasedviewresolver及其子類解析。在內部,這將創建一個internalresourceview,它為新視圖執行一個requestdispatcher.forward()操作。

當我們用curl執行該命令時:

我們會得到http 405 (不允許的方法):

Spring 重定向(Redirect)指南及相關策略問題

與我們在重定向解決方案中的兩個請求相比,在這種情況下,我們只有一個請求從瀏覽器/客戶端發送到服務器端。當然,以前由重定向添加的屬性也不需要了。

包含 redirectattributes 的屬性

接下來 - 讓我們看看在一個重定向中傳遞屬性 - 充分利用框架中的redirectattribures:

Spring 重定向(Redirect)指南及相關策略問題

如前所述,我們可以直接在方法中插入屬性對象 - 這使得該機制非常容易使用。

還要注意,我們也添加一個flash屬性 - 這是一個不會被添加到url中的屬性。我們可以通過這種屬性來實現——我們稍后可以在重定向的最終目標的方法中使用@modelattribute(“flashattribute”)來訪問flash屬性:

Spring 重定向(Redirect)指南及相關策略問題

因此,圓滿完工——如果你需要使用curl測試該功能:

我們將會被重定向到新的位置:

Spring 重定向(Redirect)指南及相關策略問題

這樣,使用redirectattribures代替modelmap,賦予我們僅在重定向操作中涉及的兩種方法之間共享一些屬性的能力。

沒有前綴的另一種配置

現在讓我們探索另一種配置——沒有前綴的重定向。

為了實現這一點,我們需要使用org.springframework.web.servlet.view.xmlviewresolver:

Spring 重定向(Redirect)指南及相關策略問題

代替我們在之前配置里使用的org.springframework.web.servlet.view.internalresourceviewresolver:

Spring 重定向(Redirect)指南及相關策略問題

我們還需要在配置里面定義一個redirectview bean:

Spring 重定向(Redirect)指南及相關策略問題

現在我們可以通過id來引用這個新的bean來觸發重定向:

Spring 重定向(Redirect)指南及相關策略問題

為了測試它,我們再次使用curl命令:

結果會是:

Spring 重定向(Redirect)指南及相關策略問題

重定向 http post 請求  request

對于類似銀行付款這樣的用例,我們可能需要重定向http post請求。根據返回的http狀態碼,post請求可以重定向到http get或post上。

根據http 1.1協議參考,狀態碼301(永久移除)和302(已找到)允許請求方法從post更改為get。該規范還定義了不允許將請求方法從post更改為get的相關的307(臨時重定向)和308(永久重定向)狀態碼。

現在,我們來看看將post請求重定向到另一個post請求的代碼:

Spring 重定向(Redirect)指南及相關策略問題

Spring 重定向(Redirect)指南及相關策略問題

現在,讓我們使用curl命令來測試下重定向的post:

我們正在被重定向到目標地址:

結論

Spring 重定向(Redirect)指南及相關策略問題

本文介紹了在spring中實現重定向的三種不同方法,在執行這些重定向時如何處理/傳遞屬性以及如何處理http post請求的重定向。

以上所述是小編給大家介紹的vspring 重定向(redirect)指南及相關策略問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://dzone.com/articles/hacking-the-integercache-in-java-9

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天堂樱桃bt在线www | 亚洲性视频在线观看 | jzzjzz视频免费播放 | 插鸡网站| fuqer日本老师 | 91成人啪国产啪永久地址 | 国产成人啪精品午夜在线观看 | 夫妻性生活影院 | 久久伊人影视 | 精精国产xxxx视频在线播放器 | 动漫精品一区二区三区3d | 亚洲女同在线观看 | 偷偷狠狠的日日高清完整视频 | 教师波多野结衣在线播放 | 91最新入口| 欧美一级乱妇老太婆特黄 | 黑帮大佬与我的365天2标清中文 | 国产精品va在线观看无 | 日韩中文字幕在线不卡 | 满溢游泳池免费土豪全集下拉版 | 91精品综合久久久久m3u8 | 成人天堂入口网站 | 暖暖 免费 高清 中文 日本 | 97影院网| 丝袜捆绑调教丨vk | ass极品美妇pic | 亚洲精品国精品久久99热 | 午夜影院和视费x看 | 91tv在线| 我的奶头被客人吸的又肿又红 | 三星w999 | 传说之下羊妈挤羊奶网站 | 国产一二在线观看视频网站 | 513热点网深夜影院影院诶 | 国产午夜亚洲精品 | 欧美久久久久久久一区二区三区 | 啊啊啊好大好爽视频 | 亚洲色欲色欲综合网站 | 国产精品久久免费观看 | 亚洲电影第1页 | 午夜精品久久久久 |