JSP的編譯指令是通知JSP引擎的訊息,它不直接產生輸出。編譯指令都有預設值,因此開發人員無需為每個指令賦值。它的基本文法是:<%@編譯指令名 屬性名稱=“屬性值” ···········%>
(一)page:該指令是針對當前頁面的指令,page指令通常位於JSP頁面的頂端,一個JSP頁面可以使用多條page指令。page指令的文法格式:
〈%@page
[language="Java"]
[extends="package.class"]
[import="package.classIpackage. *},…"]
[session=噸rueIfalse"]
[buffer="noneI8kbIsize kb"1
[autoFlush="trueIfalse"]
[isThread8afe="trueIfalse"][info="text"]
[errorPage="relativeURL"]
[contentType=mimeType[;charset=character8et]"I"text/html;char8et=工808859-1"]
[IsErrorPage="trueIfalse"]
%〉
下面依次介紹page 的各個屬性。
language: 聲明當前 JSP 頁面使用的指令碼語言的種類,因為頁面是 JSP 頁面,該
屬性的值通常都是java。
extends: 確定 JSP程式編譯時間所產生的 Java類,需要繼承的父類,或者需要實現的介面的全限定類名。
import: 用來匯入包,下面幾個包是預設自動匯入的,不需要顯式匯入。預設匯入的包有:
java.lang.* javax.servlet.*javax.serlet.jsp.* javax.servlet.http*
session: 設定這個 JSP 頁面是否需要 HTIP session。
buffer: 指定輸出緩衝區的大小。輸出緩衝區的 JSP 內部對象: out 用於緩衝 JSP頁面對客戶瀏覽器的輸出,預設值為 8脅,可以設定為 none,也可以設定為其他的值,單位為 kb。
autoFlush: 當輸出緩衝區即將溢出時,是否需要強制輸出緩衝區的內容。設定為true 時為正常輸出:如果設定為 false,會在 buffer溢出時產生一個異常。
info: 設定該 JSP程式的資訊,也可以看做其說明,可以通過 Serlet. getServletInfoO方法擷取該值。如果在 JSP 頁面中,可直接調用 getServletInfoO方法擷取該值,因為 JSP 頁面的實質就是 Serlet。
eηorPage: 指定錯誤處理頁面。如果本程式產生了異常或者錯誤,而該 JSP 頁面沒有對應的處理代碼,則會自動調用該指令所指定的 JSP 頁面。使用 JSP 頁面時,可以不處理異常,即使是 checked 異常。
isErroePage: 設定本 JSP 頁面是否為錯誤處理程式。如果該頁面本身己是錯誤處理頁面,則無須使用 errorPage 屬性。
contentType: 用於設定產生網頁的檔案格式和編碼方式,即 MIME類型和頁面宇符集類型,預設的 MIME類型是 textlhtml; 預設的字元集為 ISO-8859-1
errorPage屬性的實質是JSP異常處理機制,JSP指令碼不要求強制處理異常,即使該異常是checked異常。如果JSP頁面在運行中拋出未處理的異常,系統將自動跳轉到errorPage屬性指定的頁面;一旦errorPage屬性設定了指定的JSP頁面,則指定的JSP頁面的isErrorPage屬性設定為true。
(二)include指令:用於包含另一個頁面,可以將一個外部檔案嵌入到當前JSP檔案中,同時解析這個頁面中的JSP語句。這是個靜態include語句,它會把目標頁面的其他編譯指令也包含進來,但動態不會。include既可以包含靜態文本,也可以包含動態JSP頁面。
文法:<% @include file="relativeURLSpec"%> include指令最好包含的是不需要經常改變的靜態內容。如果被內嵌檔案經常需要改變,建議使用<jsp:include>操作指令。
(三)taglib指令
taglib指令允許頁面使用使用者自訂標籤。使用者首先要開發自己的標籤庫(taglib),為標籤庫編寫設定檔(以.tld為尾碼的檔案),然後在JSP頁面中使用該自訂標籤。由於使用了標籤,增加了代碼的重用程度,比如可以把一些需要迭代顯示的內容做成一個標籤,在每次需要迭代顯示時,就使用這個標籤。使用標籤也使頁面易於維護。
在JSP規範中,標籤庫得到了不斷的加強,在最新的JSP 2.0 規範中增加了JSP 標準標籤庫(JSP Standard Tag Library,JSTL),使用者可以直接應用。
在JSP中利用使用者自訂標籤庫或JSTL的文法格式如下。
<%@ taglib uri="tablibURI" prefix="tagPrefix"%> |
其中,uri用來表示標籤庫的地址,也就是告訴JSP容器怎麼找到標籤描述檔案和標籤庫,prefix 表示在JSP頁面裡引用這個標籤的首碼,這些首碼不可以是jsp、jspx、java、javax、sun、servlet和sunw。