跳轉(Forward)和頁面重定向(Redirect)的區別
阿新 • • 發佈:2019-01-27
我們通過兩個流程來看一下它們之間的區別。
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
3. 使用者點選頁面中的按鈕。
4. JSF收到請求,直接渲染page1.xhtml頁面並返回給瀏覽器。 5. 瀏覽器顯示 page1.xhtml。這時候位址列裡顯示的還是start.xhtml
由此可看出,重定向要比跳轉多傳送一個請求,所以相對要慢一些。JSF預設全部採用 Forward的方式跳轉頁面。如果想要重定向頁面,可以在導航中新增 <redirect />,或者在 h:commandButton的action屬性後新增 "faces-redirect=true":
<h:form> <h:commandButton action="page1?faces-redirect=true" value="Page1" /> </h:form>