跳轉(Forward)和頁面重定向(Redirect)的區別


我們通過兩個流程來看一下它們之間的區別。

 

Redirect

1. 用戶瀏覽器向 http://localhost:8080/demo/start.xhtml 發送 GET 請求。
2. JSF收到請求,返回 start.xhtml 頁面。
3. 用戶點擊頁面中的按鈕。
4. JSF收到請求, 向瀏覽器發送 Redirect 指令(3XX的HTTP狀態值)。
5. 瀏覽器收到指令, 發送另一個 GET 到 http://localhost:8080/demo/page1.xhtml。
6.JSF返回page1.xhtml。
7. 瀏覽器顯示page1.xhtml。這時地址欄里顯示的是page1.xhtml。
 
 

Forward

1. 用戶瀏覽器向 http://localhost:8080/demo/start.xhtml 發送 GET 請求。
2. JSF收到請求,返回 start.xhtml 頁面。
3. 用戶點擊頁面中的按鈕。
4. JSF收到請求, 直接渲染page1.xhtml頁面並返回給瀏覽器
5. 瀏覽器顯示 page1.xhtml。這時候地址欄里顯示的還是start.xhtml
 
 
 
由此可看出,重定向要比跳轉多發送一個請求,所以相對要慢一些。JSF默認全部采用 Forward的方式跳轉頁面。如果想要重定向頁面,可以在導航中添加 <redirect />,或者在 h:commandButton的action屬性后添加 "faces-redirect=true":
1 <h:form>  
2     <h:commandButton action="page1?faces-redirect=true" value="Page1" />  
3 </h:form>

參考:http://blog.csdn.net/neosmith/article/details/20218297


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM