posts - 2,  comments - 0,  trackbacks - 0
            forward與redirect都是用于引導客戶端的請求到另一個頁面或另一個Servlet中的,二者的區別總結如下:
          1.RequestDispatcher.forward()
             服務端跳轉,無條件立即執行,后面代碼不再執行;
             轉發頁面和轉發到的頁面可以共享request里面的數據;
             forward效率高;
             通常在servlet中使用;
             容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址,地址欄不改變;
             無法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同時forward()無法在后面帶參數傳遞,比如 servlet?name=frank,這樣不行,可以程序內通過response.setAttribute("name",name)來傳至下一個頁 面;
             一般用于用戶登陸的時候,根據角色轉發到相應的模塊
             注意:forward動作發生時,如果已經有文本被寫入輸出流而且頁面沒有設置緩沖 ,將拋出IllegalStateException異常。

          2.response.sendRedirect()
             客戶斷跳轉,所有代碼執行完后再執行跳轉;
             用戶請求不被發送到下一個頁面,不能共享數據,必須重新設置參數;
             redirect效率低;
             通常在jsp中使用;
             完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發送請求鏈接,這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址;
             可以帶參數傳遞,比如servlet?name=frank傳至下個頁面,同時它可以重定向至不同的主機上,sendRedirect()可以重定向有frame.的jsp文件;
             一般用于用戶注銷登陸時返回主頁面和跳轉到其它的網站等
             注意:response.sendRedirect之后,應該緊跟一句return;
             response.sendRedirect是通過瀏覽器來做轉向的,所以只有在頁面處理完成后,才會有實際的動作。既然你已經要做轉向了,那么后的輸出還有什么意義呢?而且有可能會因為后面的輸出導致轉向失敗。

          http://yilin.iteye.com/blog/893998
          posted on 2012-02-22 13:39 wilsonyq 閱讀(346) 評論(0)  編輯  收藏 所屬分類: javaweb

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 胶南市| 祁东县| 灵武市| 万安县| 张北县| 鄯善县| 阳谷县| 清水县| 龙口市| 漯河市| 阳西县| 芜湖县| 密山市| 翁牛特旗| 冷水江市| 香港 | 秦皇岛市| 区。| 云和县| 新巴尔虎左旗| 诏安县| 岢岚县| 科尔| 乌鲁木齐市| 伊吾县| 班戈县| 贵溪市| 岳普湖县| 白玉县| 高碑店市| 浦县| 西畴县| 杨浦区| 吴堡县| 阿拉善左旗| 武隆县| 敦煌市| 文水县| 韶山市| 自贡市| 普陀区|