官术网_书友最值得收藏!

5.5 動作標識

視頻講解:光盤\TM\lx\5\12動作標識.mp4

5.5.1 包含文件標識<jsp:include>

JSP的動作標識<jsp:include>用于向當前頁面中包含其他的文件。被包含的文件可以是動態文件,也可以是靜態文件。<jsp:include>動作標識包含文件的過程如圖5.9所示。

圖5.9 <jsp:include>動作標識包含文件的過程

<jsp:include>動作標識的語法格式如下:

        <jsp:include page="url" flush="false|true" />

      <jsp:include page="url" flush="false|true" >
          子動作標識<jsp:param>
      </jsp:include>

參數說明:

page:用于指定被包含文件的相對路徑。例如,指定屬性值為top.jsp,則表示包含的是與當前JSP文件相同文件夾中的top.jsp文件包含到當前JSP頁面中。

flush:可選屬性,用于設置是否刷新緩沖區。默認值為false,如果設置為true,在當前頁面輸出使用了緩沖區的情況下,先刷新緩沖區,然后再執行包含工作。

子動作標識<jsp:param>:用于向被包含的動態頁面中傳遞參數。關于<jsp:param>標識的詳細介紹請參見5.5.3節。

說明

<jsp:include>標識對包含的動態文件和靜態文件的處理方式是不同的。如果被包含的是靜態文件,則頁面執行后,在使用了該標識的位置將會輸出這個文件的內容。如果<jsp:include>標識包含的是一個動態文件,那么JSP編譯器將編譯并執行這個文件。<jsp:include>標識會識別出文件的類型,而不是通過文件的名稱來判斷該文件是靜態的還是動態的。

技巧

在應用<jsp:include>標識進行文件包含時,為了使整個頁面的層次結構不發生沖突,建議在被包含頁面中將<html>、<body>等標記刪除。

【例5.22】應用<jsp:include>標識包含網站Banner和版權信息欄。(實例位置:光盤\TM\sl\5\5)

(1)編寫一個名稱為top.jsp的文件,用于放置網站的Banner信息和導航條。這里將Banner信息和導航欄設計為一張圖片。這樣完成top.jsp文件,只需要在該頁面中通過<img>標記引入圖片即可。top.jsp文件的代碼如下:

        <%@ page pageEncoding="GB18030"%>
        <img src="images/banner.JPG">

(2)編寫一個名稱為copyright.jsp的文件,用于放置網站的版權信息。copyright.jsp文件的具體代碼如下:

        <%@ page pageEncoding="GB18030"%>
        <%
        String copyright="&nbsp; All Copyright&copy;2016 吉林省明日科技有限公司";
        %>
        <table width="778" height="61" border="0" cellpadding="0" cellspacing="0" background="images/copyright.JPG">
          <tr>
            <td> <%= copyright %></td>
          </tr>
        </table>

(3)創建一個名稱為index.jsp的文件,在該頁面中包含top.jsp和copyright.jsp文件,從而實現一個完整的頁面。index.jsp文件的具體代碼如下:

        <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>使用&lt; jsp:include&gt;動作標識包含文件</title>
        </head>
        <body style="margin:0px; ">
        <jsp:include page="top.jsp"/>
        <table width="781" height="279" border="0" cellpadding="0" cellspacing="0" background="images/center.JPG">
          <tr>
            <td>&nbsp; </td>
          </tr>
        </table>
        <jsp:include page="copyright.jsp"/>
        </body>
        </html>

運行程序,將顯示如圖5.10所示的效果。

圖5.10 運行結果

技巧

如果要在JSP頁面中顯示大量的純文本,可以將這些文本文字寫入靜態文件(如記事本)中,然后通過include指令或動作標識包含到該JSP頁面,這樣可以讓JSP頁面更簡潔。

在前面的章節中介紹了include指令,該指令與<jsp:include>動作標識相同,都可以用來包含文件。但它們之間是存在很大差別的。下面將對include指令與<jsp:include>動作標識的區別進行詳細介紹。

(1)include指令通過file屬性指定被包含的文件,并且file屬性不支持任何表達式;<jsp:include>動作標識通過page屬性指定被包含的文件,而且page屬性支持JSP表達式。

(2)使用include指令時,被包含的文件內容會原封不動地插入到包含頁中,然后JSP編譯器再將合成后的文件最終編譯成一個Java文件;使用<jsp:include>動作標識包含文件時,當該標識被執行時,程序會將請求轉發(注意是轉發,而不是請求重定向)到被包含的頁面,并將執行結果輸出到瀏覽器中,然后返回包含頁,繼續執行后面的代碼。因為服務器執行的是多個文件,所以JSP編譯器會分別對這些文件進行編譯。

(3)在應用include指令包含文件時,由于被包含的文件最終會生成一個文件,所以在被包含文件、包含文件中不能有重名的變量或方法;而在應用<jsp:include>動作標識包含文件時,由于每個文件是單獨編譯的,所以在被包含文件和包含文件中重名的變量和方法是不相沖突的。

5.5.2 請求轉發標識<jsp:forward>

通過<jsp:forward>動作標識可以將請求轉發到其他的Web資源,例如,另一個JSP頁面、HTML頁面、Servlet等。執行請求轉發后,當前頁面將不再被執行,而是去執行該標識指定的目標頁面。執行請求轉發的基本流程如圖5.11所示。

圖5.11 執行請求轉發的基本流程

<jsp:forward>動作標識的語法格式如下:

        <jsp:forward page="url"/>

        <jsp:forward page="url">
            子動作標識<jsp:param>
        </jsp:forward>

參數說明:

page:用于指定請求轉發的目標頁面。該屬性值可以是一個指定文件路徑的字符串,也可以是表示文件路徑的JSP表達式。但是請求被轉向的目標文件必須是內部的資源,即當前應用中的資源。

子動作標識<jsp:param>:用于向轉向的目標文件中傳遞參數。關于<jsp:param>標識的詳細介紹請參見5.5.3節。

【例5.23】應用<jsp:forward>標識將頁面轉發到用戶登錄頁面。(實例位置:光盤\TM\sl\5\6)

(1)創建一個名稱為index.jsp的文件,該文件為中轉頁,用于通過<jsp:forward>動作標識將頁面轉發到用戶登錄頁面(login.jsp)。index.jsp文件的具體代碼如下:

        <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>中轉頁</title>
        </head>
        <body>
        <jsp:forward page="login.jsp"/>
        </body>
        </html>

(2)編寫login.jsp文件,在該文件中添加用于收集用戶登錄信息的表單及表單元素。具體代碼如下:

        <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>用戶登錄</title>
        </head>
        <body>
        <form name="form1" method="post" action="">
        用戶名:<input name="name" type="text" id="name" style="width: 120px"><br>
        密&nbsp; &nbsp;碼:<input name="pwd" type="password" id="pwd" style="width: 120px"> <br>
        <br>
        <input type="submit" name="Submit" value="提交">
        </form>
        </body>
        </html>

運行實例,將顯示如圖5.12所示的用戶登錄頁面。

圖5.12 請求轉發至登錄頁面

5.5.3 傳遞參數標識<jsp:param>

JSP的動作標識<jsp:param>可以作為其他標識的子標識,用于為其他標識傳遞參數。其語法格式如下:

        <jsp:param name="參數名" value="參數值" />

參數說明:

name:用于指定參數名稱。

value:用于設置對應的參數值。

【例5.24】通過<jsp:param>標識為<jsp:forward>標識指定參數,可以使用下面的代碼:

        <jsp:forward page="modify.jsp">
            <jsp:param name="userId" value="7"/>
        </jsp:forward>

在上面的代碼中,實現了在請求轉發到modify.jsp頁面的同時,傳遞了參數userId,其參數值為7。

說明

通過<jsp:param>動作標識指定的參數,將以“參數名=值”的形式加入到請求中,它的功能與在文件名后面直接加“?參數名=參數值”是相同的。

主站蜘蛛池模板: 玛沁县| 桑植县| 灵台县| 全州县| 定安县| 潞西市| 滦平县| 武乡县| 长宁县| 新闻| 龙陵县| 临朐县| 扎兰屯市| 南川市| 海兴县| 正宁县| 锡林浩特市| 北安市| 绥滨县| 扶余县| 雅江县| 建始县| 电白县| 荥阳市| 同德县| 榆社县| 五华县| 潼关县| 同江市| 新巴尔虎右旗| 会昌县| 礼泉县| 永州市| 沁水县| 舒兰市| 罗山县| 吉首市| 洪雅县| 皮山县| 南川市| 哈密市|