簡體   English   中英

如何在用戶瀏覽器中更改url而不在servlet中進行客戶端重定向

[英]How to change url in user browser without client redirect in servlet

我想從一頁轉發到另一頁,但我想更改URL。 假設用戶在這里http:// mywebsite / register,並且當他完成注冊過程時,我希望在其地址欄中http:// mywebsite / home

是否可以不使用sendRedirect,我的意思是僅通過服務器端轉發? 或其他解決此問題的方法?

AFAIK無法繞過重定向,因為瀏覽器必須在某個時刻更新URL。 而且,如果在轉發頁面加載后更新URL,則會發出刷新並重新加載頁面(這可能會導致無限循環)。

在這種情況下,為什么不想要使用重定向?

您可以只讓HTML表單直接提交到該URL。

<form action="http://mywebsite/home">

但這是沒有道理的。 如果在驗證失敗的情況下重新顯示帶有驗證消息的相同表單,還會遇到問題。 如果您打算保留原始URL,則需要重定向回原始頁面,並且需要在會話范圍而不是請求范圍中存儲消息,因為重定向基本上會創建一個全新的請求。 最終用戶在提交表單后按F5時,沒有重定向的情況下您也會遇到“雙重提交”問題。

只需讓servlet將成功的POST請求重定向到所需的URL。 這就是規范的方法。 甚至,這是一個推薦的“設計模式”: POST-Redirect-GET模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM