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

咱們經過兩個流程來看一下它們之間的區別。html

 

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瀏覽器

相關文章
相關標籤/搜索