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

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

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 安乡县| 临沧市| 永善县| 福海县| 筠连县| 山东省| 兴和县| 宜宾市| 岑巩县| 师宗县| 汽车| 泰州市| 宝丰县| 全南县| 巴东县| 平南县| 德州市| 盐源县| 中方县| 台州市| 永春县| 丰台区| 冕宁县| 绥棱县| 报价| 庆云县| 海兴县| 凤山县| 视频| 池州市| 称多县| 绥滨县| 沙洋县| 中西区| 虹口区| 广东省| 沿河| 河曲县| 余姚市| 永顺县| 中山市|