JSP三大編譯指令 page指令 include指令 taglib指令

1、page指令
page指令用戶定義JSP頁面中的全局屬性,它的語法格式如下:

<%page
{language=”java”}
{extends=”package.class”}
{import=”{package.class|package.*},…”}
{session=”true | false”}
{buffer=”none | 8kb | sizekb”}
{ false”}
{isThreadSafe=”true | false”}
{info=”text”}
{errorPage=”relativeURL”}
{contentType=”mimeType [;charset=characterSet]” | “text/html ; charset=ISO-8859-1”}
{isErrorPage=”true | false”}
{pageEncoding=”charset=characrerSet | ISO-8859-1″}
%>

page指令對整個頁面有效,包括靜態的包含文件,但page指令不能用於被動態包含的文件,例如使用包含的文件。在一個JSP頁面中可以使用多個page指令,但page指令中的屬性隻能出現一次(import屬性除外)。

Example:

通過Page命令,你可以為整個JSP頁面定義上面提到的全局屬性,其中除瞭“import”之外,其他的都隻能引用一次,import屬性和Java語言中的import非常相似,可以在JSP頁面中多次使用它。

關於的位置可以不去考慮,放在任何地方都可以很好的工作,但出於良好的編程習慣,建議放在JSP頁面的頂部。幾乎所有的JSP頁面頂部都可以找到指令page。

1.language屬性

定義JSP頁面使用的腳本語言,若使用JSP引擎支持Java以外的語言,可指定所使用的語言種類。默認語言為Java

language=”java”

指明JSP文件中使用的腳本語言,目前隻能使用Java。

2.contentType屬性

contentType屬性定義瞭JSP頁面字符編碼和頁面響應的MIME類型。默認的MIME類型是text/html,默認的字符集是ISO-8859-1。例如:

3.import屬性

該屬性用於JSP引入Java包中的類,如果你要包含多個包的話,將這些包的名稱用逗號隔開放在一個import中,或者使用多個import分別聲明。它是唯一可以多次指定的屬性。

在使用Java包中的元素之前一定要先聲明該包的import引用。下面一些Java包,是默認包含的,不用再在JSP頁面中聲明。

java.lang.*

javax.servlet.*

javax.servlet.jsp.*

javax.servlet.http.*

4.extends屬性

定義此JSP頁面產生的Servlet是繼承自哪個父類。請特別謹慎使用這一功能,因為,服務器也許已經定義瞭一個。JSP規范對不完全理解其隱意的情況下使用此屬性提出警告。

5.isErrorPage屬性

isErrorPage=”true|false”

默認值為“true”,設置是否顯示錯誤信息。如果為true,可以看到出錯信息,如果為false,就看不到瞭。

6.errorPage屬性

errorPage=”relativeURL”

設置處理異常事件的JSP文件的位置。表示如果發生異常錯誤,網頁會被重新指向一個URL頁面。錯誤頁面必須在其page指令元素中指定isErrorPage=”true”。

7.session屬性

session=”true|false”

默認值為“true”,定義是否在JSP頁面使用HTTP的session。如果值為true,則可以使用session對象;如果值為false,那麼JSP頁面就不被加入到session中,session內置對象則不能使用,而同時會造成Bean的scope屬性值隻能是“page”。

8.Buffer屬性

buffer=”none|8kb|sizekb”

為內置對象out指定發送信息到客戶端瀏覽器的信息緩存大小。以kb為單位。默認值是8kb.你也可以自行指定緩存的大小。也可以設置為“none”,那麼就沒有緩沖區,所有的輸出都不經緩存而直接輸出。

9.autoFlush屬性

autoFlush=”true|false”

指定是否當緩存填滿時自動刷新,輸出緩存中的內容。如果為true,則自動刷新。否則,當緩存填滿後,可能會出現嚴重的錯誤。當你把buffer設置為none時,就不能將autoFlush設置為false。

10.isThreadSafe屬性

isThreadSafe=”true|false”

指定JSP頁面是否支持多線程訪問。默認值是ture,表示可以同時處理多個客戶請求,但是你應該在JSP頁面中添加處理多線程的同步控制代碼。如果設置為false,JSP頁面在一個時刻就隻能響應一個請求。

11.info屬性

info=”text”

指定任何一段字符串,該字符串被直接加入到翻譯好的頁面中。可以通過Servlet.getServletInfo()方法得到。

2、include指令
Include指令的功能是在JSP編譯時插入包含的文件。包含的過程是靜態的。它可以把內容分成更多可管理的元素,如包括普通頁面的頁眉或頁腳的元素。包含的文件可以是JSP、HTML、文本或是Java程序。

include指令的語法:

其中隻有一個file屬性,這個屬性指定瞭被包含文件的路徑。

如果路徑是以”/”開頭的,那麼這個路徑應該就是相對於JSP應用程序上下文而言的。而如果以目錄名或文件名開頭則是以JSP文件所在路徑為當前路徑而言。例如:

“header.jsp”

“/templates/onlinestore.html”

“/beans/calendar.jsp”

在JSP中,你可以用Include指令將JSP文件,HTML文件,或Text文件包含到一個JSP文件中,這種包含是靜態包含,也就是說當使用這種方法包含文件的時候,會將被包含文件的內容插入包含文件中,替換掉這行語句。如果你包含的是一個JSP文件,那麼包含在這個文件中的JSP程序將被執行。

當你使用Include包含一個文件的時候,一定要註意,在被包含文件中不能含有,,,等HTML元素,否則的話會導致執行錯誤。因為被包含的文件會整個加入到JSP文件中去,這些標記會與JSP文件中類似的標記相沖突。

使用包含文件有以下一些優點:

(1)被包含文件可以在多個文件中被使用,實現瞭代碼共享和重用。

(2)當被包含文件修改後,包含此文件的JSP文件的執行結果也發生變化,這樣就提高修改效率,為維護提供方便。

Example:

include.jsp

An Include Test

The current date and time are

date.jsp

上面的例子在執行後,會在客戶端的瀏覽器中顯示和下面類似的信息:

The current date and time are

Aug 30,1999 2:38:40

3、taglib指令
taglib指令中的uri屬性用於根據標簽的前綴對自定義的標簽進行唯一的命名,其值可以是相對路徑,就對路徑或標簽庫描述文件。屬性prefix制定瞭標簽的前綴。

taglib指令的語法:

例如

指令聲明此JSP文件使用瞭自定義的標簽,同時引用標簽庫,也指定瞭標簽的前綴。

這裡自定義的標簽有標簽和元素之分。因為JSP文件能夠轉化為XML,所以瞭解標簽和元素之間的聯系很重要。標簽隻不過是一個在意義上被抬高瞭點的標記,是JSP元素的一部分。JSP元素是JSP語法的一部分,和HTML一樣有開始標記和結束標記。元素可以包含其它的文本,標記,元素。使用自定義標簽之前必須使用指令,而且可以在一個頁面中多次使用,但是同一前綴隻能引用一次。

URI根據標簽的前綴對自定義的標簽進行唯一的命名prefix=”tagPrefix”,在自定義標簽前的前綴,比如,在中的public,如果不寫public,就是不合法的。請不要用jsp, jspx, java, javax, servlet, sun, 和sunw作為前綴。

發佈留言