明天的明天的明天

          用鍵盤改變生活

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            17 Posts :: 0 Stories :: 19 Comments :: 0 Trackbacks

          使用JSP大約有下列三種跳轉方式:
          1. response.sendRedirect();
          2. response.setHeader("Location","");
          3. <jsp:forward page="" />

          經(jīng)過試驗得到下面的一些規(guī)則:

          一. response.sendRedirect()

          1. 此語句前不允許有out.flush(),如果有,會有異常:
            java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
             at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
            ...
          2. 跳轉后瀏覽器地址欄變化
          3. 如果要跳到不同主機下,跳轉后,此語句后面的語句會繼續(xù)執(zhí)行,如同新開了線程,但是對response的操作已經(jīng)無意義了;
          4. 如果要跳到相同主機下,此語句后面的語句執(zhí)行完成后才會跳轉;

          二. response.setHeader("Location","")

          1. 此語句前不允許有out.flush(),如果有,頁面不會跳轉。
          2. 跳轉后瀏覽器地址欄變化
          3. 此語句后面的語句執(zhí)行完成后才會跳轉

          三. <jsp:forward page="" />

          1. 此語句前不允許有out.flush(),如果有,會有異常:
            java.lang.IllegalStateException: forward() not allowed after buffer has committed.
             at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)
             at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)
             at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)
             ...
          2. 跳轉后瀏覽器地址欄不變,但是只能跳到當前主機下
          3. 此語句后面的語句執(zhí)行完成后才會跳轉 
          4. 跳轉后得路徑變?yōu)楫斍奥窂剑瑘D片不是絕對路徑將無法顯示

          JSP跳轉頁面詳解
          在JSP中使用jsp forward Action來實現(xiàn)頁面的跳轉功能。

             語法:
          <jsp:forward page="{relativeURL|<%= expression %>}"/> 或
          <jsp:forward page="{relativeURL|<%= expression %>}">
          <jsp:param name="parameterName"
          value="{parameterValue|<%= expression %>}"/>+</jsp:forward>
            這個action使您可以將request向前到另外一個頁面。它只有一個屬性,page。Page應有一個相對的URL組成。這可以是一個靜態(tài)的值或者是能夠在被請求的時候計算得到的值,就如下面兩個例子一般:
          <jsp:forward page="/utils/errorReporter.jsp"/>
          <jsp:forward page="<%= someJavaExpression %>"/>
          !supportEmptyParas]>
            現(xiàn)在以一個具體例子來說明:在test1.jsp中使用forward使其跳轉到test2.jsp頁面中。
          Test1.jsp
          <HTML>
          <HEAD>
          <TITLE>forward test</TITLE>
          !supportEmptyParas]>
          </HEAD>
          !supportEmptyParas]>
          <BODY BGCOLOR="#FFFFFF">
          <!--跳轉到test2.jsp--!>
          <jsp:forward page="/test2.jsp"/>
          </BODY>
          </HTML>
          !supportEmptyParas]>
          test2.jsp
          <HTML>
          <HEAD>
          <TITLE> forward test </TITLE>
          !supportEmptyParas]>
          </HEAD>
          !supportEmptyParas]>
          <BODY BGCOLOR="#FFFFFF">
          <%out.println("這是jsp2.jsp頁面產(chǎn)生出的輸出");%>
          </BODY>
          </HTML>
          !supportEmptyParas]>
            運行test1.jsp,可在瀏覽器中看見:"這是jsp2.jsp頁面產(chǎn)生出的輸出"的輸出信息。但是如果你在test1.jsp和test2.jsp這兩個頁面中有參數(shù)傳遞怎么辦呢?用get方式吧,不但總的長度有限制,使用現(xiàn)在十分不方便,而且有時候還不安全。其實我們完全可以使用jsp1.1中給forward里提供的para屬性就可以解決。現(xiàn)以test3.jsp和test4.jsp來說明。
          !supportEmptyParas]>
          Test1.jsp
          <HTML>
          <HEAD>
          <TITLE> forward test </TITLE>
          !supportEmptyParas]>
          </HEAD>
          !supportEmptyParas]>
          <BODY BGCOLOR="#FFFFFF">
          <jsp:forward page="/test4.jsp">
          <jsp:param name="name" value="powerman"/>
          <jsp:param name="address" value=" 北京西大街188號"/>
          </jsp:forward>
          </BODY>
          </HTML>
          !supportEmptyParas]>
          test2.jsp
          <HTML>
          <HEAD>
          <TITLE>forward test</TITLE>
          !supportEmptyParas]>
          </HEAD>
          !supportEmptyParas]>
          <BODY BGCOLOR="#FFFFFF">
          <%
          out.println("這是jsp4.jsp頁面產(chǎn)生出的輸出"+"<br>");
          out.println("姓名:"+request.getParameter("name")+"<br>");
          out.println("地址:"+request.getParameter("address")+"<br>");
          !supportEmptyParas]>
          %>
          </BODY>
          </HTML>
             運行test3.jsp,可在瀏覽器中看見:
             "這是jsp4.jsp頁面產(chǎn)生出的輸出
             姓名:powerman
             地址:北京西大街188號"
          的輸出信息
          posted on 2007-09-17 12:54 Endless 閱讀(1768) 評論(1)  編輯  收藏

          Feedback

          # re: 【轉】JSP三種頁面跳轉方式 2012-01-06 08:49 525
          202  回復  更多評論
            


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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 兴国县| 柯坪县| 金坛市| 青冈县| 房产| 桦南县| 安陆市| 阳东县| 田阳县| 泰来县| 兰西县| 牟定县| 陆河县| 新邵县| 万全县| 错那县| 东辽县| 称多县| 文成县| 邻水| 鄯善县| 平阴县| 怀来县| 上饶县| 陕西省| 南宫市| 明溪县| 蓬莱市| 菏泽市| 云南省| 区。| 拜城县| 墨竹工卡县| 平定县| 佳木斯市| 交城县| 长春市| 玉门市| 洞口县| 介休市| 奎屯市|