2009-03-05 28 views
21

我一直在執行一個沒有顯示的動作時創建了ActionMessages,我發現我的問題是由於我的轉發器在struts-config.xml中有redirect=true爲什麼在struts 1中使用'redirect = true'?* forward?

由於默認行爲是redirect=false,我一直在考慮可以使用redirect=true哪些好處,我找不到任何答案。有誰知道何時以及爲什麼redirect=true應該用於行動轉發?

回答

31

它可以防止 '雙提交問題'

從不顯示頁面響應POST

使用GET 永遠載入網頁

導航從POST到GET使用的是重定向

更多的在此herehere

24

重定向向瀏覽器發送響應,強制瀏覽器發出新的請求。從服務器的角度來看,瀏覽器只是提出一個新的請求(儘管是自動的)。重定向的一些特徵:

  • 現有的參數和屬性 配置,新的 請求與 您在URL中指定的參數形成。
  • 新的URL 在瀏覽器中可見,用戶 可以爲其添加書籤。
  • 它需要一個 瀏覽器和回來,所以它可以是 較慢。

轉發發生在服務器上。瀏覽器不涉及這一點。正向的某些特徵:

  • 添加新參數或覆蓋現有參數。所以現有的參數不能從請求中刪除。
  • 可以在請求上下文中添加東西,它仍然可用。你可以用這種方式傳遞信息。
  • URL在瀏覽器中沒有改變,因爲瀏覽器的原始地址保持不變。
  • 您只能轉發到同一應用程序中的另一個URL。

所以這取決於你想要完成什麼。前鋒一般說得更快。但是,如果用戶應該能夠爲新位置添加書籤,則不是一種選擇。

0

如果指定 redirect="true",則Struts使用客戶端重定向[response.sendRedirect()]。 JSP將被新的瀏覽器請求調用,並且存儲在舊請求中的任何數據都將丟失。

相關問題