跳转(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浏览器

相关文章
相关标签/搜索