- Java Web從入門到精通(第2版)
- 明日科技
- 1849字
- 2020-11-28 17:38:23
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=" All Copyright©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>使用< jsp:include>;動作標識包含文件</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> </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> 密  ;碼:<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>動作標識指定的參數,將以“參數名=值”的形式加入到請求中,它的功能與在文件名后面直接加“?參數名=參數值”是相同的。
- Kibana Essentials
- Java系統分析與架構設計
- Learning Data Mining with Python
- Learning Docker Networking
- Node.js 12實戰
- 零基礎學C++(升級版)
- Mastering ASP.NET Core 2.0
- Java程序設計教程
- 自己動手構建編程語言:如何設計編譯器、解釋器和DSL
- Learn Linux Quickly
- 基于JavaScript的WebGIS開發
- Go語言高級編程(第2版)
- Lync Server Cookbook
- Serverless從入門到進階:架構、原理與實踐
- 微軟辦公軟件認證考試MOS Access 2013實訓教程