JSP page指令

JSP中的page指令用於向容器提供與當前JSP頁面相關的指令。可以在JSP頁面的任何位置使用page指令進行編碼。 按照慣例,page指令被編碼在JSP頁面的頂部。

以下是page指令的基本語法 -

<%@ page attribute = "value" %>

可以使用XML編寫上述語法,如下所示:

<jsp:directive.page attribute = "value" />

屬性

下表列出了與page指令相關聯的屬性 -

序號

屬性

說明

1

buffer

指定輸出流的緩衝模型。

2

autoFlush

控制servlet輸出緩衝區的行爲。

3

contentType

定義字符編碼方案。

4

errorPage

定義另一個報告Java未檢查運行時異常的JSP的URL。

5

isErrorPage

指示此JSP頁面是否是由另一個JSP頁面的errorPage屬性指定的URL。

6

extends

指定生成的servlet必須擴展的超類。

7

import

指定JSP中使用的包或類的列表,就像Java的import語句一樣。

8

info

定義可以使用servlet的getServletInfo()方法訪問的字符串。

9

isThreadSafe

定義生成的servlet的線程模型。

10

language

定義JSP頁面中使用的編程語言。

11

session

指定JSP頁面是否參與HTTP會話

12

isELIgnored

指定JSP頁面中的EL表達式是否被忽略。

13

isScriptingEnabled

確定腳本元素是否被允許使用。

1. buffer屬性

buffer屬性指定服務器輸出響應對象的緩衝特性。

可以編寫指一個none值來指定不使用緩衝,以便servlet輸出立即被定向到響應對象,或者可以編寫一個以KB爲單位的最大緩衝區大小,這將指示servlet在寫入響應之前寫入緩衝區。

如要指示servlet將輸出直接寫入響應輸出對象,請使用以下命令 -

<%@ page buffer = "none" %>

使用以下命令來指示servlet將輸出寫入大小不小於64KB字節的緩衝區 -

<%@ page buffer = "64kb" %>

2. autoFlush屬性

autoFlush屬性指定緩衝區輸出是否在緩衝區填充時自動刷新,或者是否引發異常以指示緩衝區溢出。

true(默認值)值表示自動緩衝區刷新,false值表示引發異常。

當servlet的輸出緩衝區已滿時,以下指令會導致servlet拋出異常,則使用以下語句 -

<%@ page autoFlush = "false" %>

此指令使servlet在完全輸出時刷新輸出緩衝區,

<%@ page autoFlush = "true" %>

通常,bufferautoFlush屬性在page指令中進行編碼,如下所示:

<%@ page buffer = "16kb" autoflush = "true" %>

3. contentType屬性

contentType屬性設置JSP頁面和生成的響應頁面的字符編碼。 默認內容類型爲:text/html,它是HTML頁面的標準內容類型。

如果要從JSP輸出爲XML,請使用以下page指令 -

<%@ page contentType = "text/xml" %>

以下語句指示向瀏覽器生成的頁面呈現爲HTML -

<%@ page contentType = "text/html" %>

以下指令將內容類型設置爲:Microsoft Word文檔 -

<%@ page contentType = "application/msword" %>

還可以指定響應的字符編碼。 例如,如果要指定返回瀏覽器的結果頁面使用:UTF-8,則可以使用以下page指令 -

<%@ page contentType = "text/html:charset=UTF-8" %>

4. errorPage屬性

如果希望在當前頁面運行時出現錯誤時,指定一個錯誤提示頁面,那麼errorPage屬性告訴JSP引擎顯示哪個頁面。errorPage屬性的值是相對URL。

當拋出所有未捕獲的異常時,以下指令用於在頁面出錯時指定顯示MyErrorPage.jsp的內容 -

<%@ page errorPage = "MyErrorPage.jsp" %>

5. isErrorPage屬性

isErrorPage屬性表示當前的JSP頁面可以用作另一個JSP的錯誤頁面。

isErrorPage的值可爲truefalseisErrorPage屬性的默認值爲false

例如,handleError.jspisErrorPage選項設置爲true,因爲它應該處理錯誤 -

<%@ page isErrorPage = "true" %>

6. extends屬性

extends屬性指定生成的servlet必須擴展的超類。

例如,以下指令指示JSP轉換器生成servlet,以使servlet擴展somePackage.SomeClass -

<%@ page extends = "somePackage.SomeClass" %>

7. import屬性

import屬性與Java import語句具有相同的功能,並且類似於Java import語句。import選項的值是要導入的程序包的名稱。

例如,要導入java.sql.*,請使用以下page指令 -

<%@ page import = "java.sql.*" %>

要導入多個包,可以使用逗號分隔,如下所示:

<%@ page import = "java.sql.*,java.util.*"  %>

默認情況下,容器會自動導入java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*

8. info屬性

info屬性允許提供JSP的描述。以下是一個代碼示例 -

<%@ page info = "This JSP Page Written By Maxsu"  %>

9. isThreadSafe屬性

isThreadSafe選項將頁面標記爲線程安全。默認情況下,所有JSP都被認爲是線程安全的。 如果將isThreadSafe選項設置爲false,則JSP引擎確保一次只有一個線程正在執行JSP。

以下page指令將isThreadSafe選項的值設置爲false -

<%@ page isThreadSafe = "false"  %>

10. language屬性

language屬性指示在JSP頁面腳本編寫中使用的編程語言。

例如,由於通常我們使用Java作爲腳本語言,因此language選項可設置成如下:

<%@ page language = "java" %>

11. session屬性

session屬性指示JSP頁面是否使用HTTP會話。如果設置值爲true,則表示JSP頁面可以訪問內置session對象,設置值爲false表示JSP頁面無法訪問內置session對象。

以下指令允許JSP頁面使用任何內置session對象方法,如:session.getCreationTime()session.getLastAccessTime() -

<%@ page session = "true" %>

12. isELIgnored屬性

isELIgnored屬性能夠禁用JSP 2.0中引入的表達式語言(EL)表達式的求值計算。

isELIgnored屬性的默認值爲true,這意味着表達式${...}按JSP規範進行評估計算。如果屬性設置爲false,則不會對錶達式進行評估求值,而將其視爲靜態文本內容。

以下指令設定表達式不會被評估計算 -

<%@ page isELIgnored = "false" %>

13. isScriptingEnabled屬性

isScriptingEnabled屬性確定腳本元素是否被允許使用。

isScriptingEnabled屬性默認值爲true,它表示啓用腳本,表達式和聲明。 如果屬性的值設置爲false,則如果JSP使用任何腳本,表達式(非EL)或聲明,則會引發轉換時錯誤。

如果要限制腳本,表達式(非EL)或聲明的使用,可將isScriptingEnabled屬性的值可以設置爲false -

<%@ page isScriptingEnabled = "false" %>