<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 32,  comments - 3,  trackbacks - 0
    sendRedirect()與forward()實(shí)現(xiàn)轉(zhuǎn)向的異同
           1.前面慢,后者快
           2.前面無法讀取request.setAttribute()所保存的數(shù)值,而后者可以讀取
           3.前者地址欄顯示真正轉(zhuǎn)向后的地址,而后者顯示的是轉(zhuǎn)向前的地址
           4.前者,轉(zhuǎn)向地址開始的"/",表示的是本機(jī)的根目錄;而后者,"/"表示的是應(yīng)用的根目錄

    1.RequestDispatcher.forward()

            是在服務(wù)器端起作用,當(dāng)使用forward()時,Servletengine傳遞HTTP請求從當(dāng)前的Servlet or JSP到另外一個Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此時form提交的所有信息在 b.jsp都可以獲得,參數(shù)自動傳遞.

            但forward()無法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同時forward()無法在后面帶參數(shù)傳遞,比如servlet?name=frank,這樣不行,可以程序內(nèi)通過 response.setAttribute("name",name)來傳至下一個頁面.

            重定向后瀏覽器地址欄URL不變. 因?yàn)橥瓿梢粋€業(yè)務(wù)操作往往需要跨越多個步驟,每一步驟完成相應(yīng)的處理后,轉(zhuǎn)向到下一個步驟。比如,通常業(yè)務(wù)處理在Servlet中處理,處理的結(jié)果轉(zhuǎn)向到一個 JSP頁面進(jìn)行顯示。這樣看起來類似于Servlet鏈的功能,但是還有一些區(qū)別。一個RequestDispatcher對象可以把請求發(fā)送到任意一個服務(wù)器資源,而不僅僅是另外一個Servlet。

    注意,只有在尚未向客戶端輸出響應(yīng)時才可以調(diào)用forward()方法,如果頁面緩存不為空,在重定向前將自動清除緩存。否則將拋出一個異常

    例:servlet文件中重定向


    public void doPost(HttpServletRequest request,HttpServletResponse response)

            throws ServletException,IOException

    {

            response.setContentType("text/html; charset=gb2312");

            ServletContext sc = getServletContext();

            RequestDispatcher rd = null;

            rd = sc.getRequestDispatcher("/index.jsp");

            rd.forward(request, response);

    }

         
     
    2.response.sendRedirect()

            是在用戶的瀏覽器端工作,sendRedirect()可以帶參數(shù)傳遞,比如servlet?name=frank傳至下個頁面,同時它可以重定向至不同的主機(jī)上,且在瀏覽器地址欄上會出現(xiàn)重定向頁面的URL.

            HttpServletResponse接口定義了可用于轉(zhuǎn)向的sendRedirect()方法。代碼如下:

            public void sendRedirect(java.lang.String location)throws java.io.IOException

            這個方法將響應(yīng)定向到參數(shù)location指定的、新的URL。location可以是一個絕對的URL,如response.sendRedirect ("  

            RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的區(qū)別是:前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用Request Dispatcher.forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務(wù)器上的資源,則必須使用 HttpServletResponse.sendRequest()方法。

    主站蜘蛛池模板: 亚洲精品无码成人AAA片| 成人永久免费高清| 国产亚洲av片在线观看播放| 一道本不卡免费视频| 亚洲乱码中文字幕综合234| 老司机午夜精品视频在线观看免费 | 中文字幕人成人乱码亚洲电影| 一区二区三区在线免费观看视频| 亚洲AV无码一区二三区 | 久久久久久AV无码免费网站| 亚洲av无码国产精品色午夜字幕 | 久久精品一区二区免费看| 亚洲高清在线播放| 最近免费中文字幕高清大全| 亚洲制服丝袜在线播放| 日韩在线看片免费人成视频播放 | 无码日韩精品一区二区三区免费| 亚洲免费视频在线观看| 99在线精品视频观看免费| 亚洲午夜精品一区二区麻豆| 国产乱子伦精品免费无码专区 | 亚洲国产综合人成综合网站00| 成年人免费的视频| 精品亚洲av无码一区二区柚蜜| 亚洲国产综合无码一区二区二三区 | 亚洲av永久无码| 激情97综合亚洲色婷婷五| 91高清免费国产自产| 亚洲av永久无码精品秋霞电影秋| 久久亚洲国产成人精品无码区| 4虎1515hh永久免费| 色五月五月丁香亚洲综合网| 青青草原亚洲视频| 桃子视频在线观看高清免费完整| 精品久久久久亚洲| 久久精品国产亚洲精品2020| 国产精品无码免费视频二三区 | 亚洲av高清在线观看一区二区| 男女午夜24式免费视频| 亚洲精品国产摄像头| 亚洲AV无码欧洲AV无码网站|