位置:首頁 > Java技術 > JSP教學 > JSP page指令

JSP page指令

page指令用於提供指示,涉及到當前JSP頁麵的容器。你可以在你的JSP頁麵的任何地方代碼頁指令。按照慣例,page指令進行編碼的JSP頁麵的頂部。

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

<%@ page attribute="value" %>

您可以編寫XML相當於上麵的語法如下:

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

屬性:

以下是page指令相關聯的屬性的列表:

屬性 目的
buffer Specifies a buffering model for the output stream.
autoFlush Controls the behavior of the servlet output buffer.
contentType Defines the character encoding scheme.
errorPage Defines the URL of another JSP that reports on Java unchecked runtime exceptions.
isErrorPage Indicates if this JSP page is a URL specified by another JSP page's errorPage attribute.
extends Specifies a superclass that the generated servlet must extend
import Specifies a list of packages or classes for use in the JSP as the Java import statement does for Java classes.
info Defines a string that can be accessed with the servlet's getServletInfo() method.
isThreadSafe Defines the threading model for the generated servlet.
language Defines the programming language used in the JSP page.
session Specifies whether or not the JSP page participates in HTTP sessions
isELIgnored Specifies whether or not EL expression within the JSP page will be ignored.
isScriptingEnabled Determines if scripting elements are allowed for use.

buffer 屬性:

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

你可以編寫“none”值來指定冇有緩衝,使所有servlet的輸出立即定向到響應對象,或者您可以編寫一個最大緩衝區大小以KB為單位寫入到響應之前,它指示的servlet寫入緩衝區對象。

可直接進行servlet來寫直接輸出到響應輸出對象,使用以下命令:

<%@ page buffer="none" %>

使用以下方法來指導servlet將輸出寫入大小不超過8千字節以下的緩衝區:

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

autoFlush 屬性:

AutoFlush屬性指定是否緩衝輸出,當緩衝區填滿,或異常是否應該提高,表明緩衝區溢出應該會自動刷新。

true(默認)值表示自動緩衝刷新和false值拋出一個異常。

下麵的指令使當servlet的輸出緩衝區已滿拋出一個異常的servlet:

<%@ page autoFlush="false" %>

該指令使該servlet來刷新輸出緩衝區滿時:

<%@ page autoFlush="true" %>

通常情況下,緩衝區和自動衝洗屬性在一個單一的頁麵指令編碼如下:

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

contentType 屬性:

contentType屬性設置為JSP頁麵並生成響應頁麵的字符編碼。默認的內容類型是text/html,這是標準的內容類型為HTML頁麵。

如果想從JSP寫出來的XML,使用下麵的page指令:

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

下麵的語句指示瀏覽器渲染生成的頁麵的HTML:

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

下麵的指令設置內容類型為Microsoft Word文檔:

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

您也可以指定響應的字符編碼​​。例如,如果你想指定返回給瀏覽器產生的頁麵使用ISO Latin 1,你可以使用下麵的page指令:

<%@ page contentType="text/html:charset=ISO-8859-1" %>

errorPage 屬性:

errorPage屬性告訴JSP引擎要顯示的頁麵,如果有一個錯誤在當前頁麵運行一段時間。errorPage屬性的值是一個相對URL。

下麵的指令顯示MyErrorPage.jsp當所有未捕獲的異常被拋出:

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

isErrorPage 屬性:

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

isErrorPage的值為true或false。在isErrorPage屬性的默認值是false。

例如,handleError.jsp設置isErrorPage選項設置為true,因為它應該處理錯誤:

<%@ page isErrorPage="true" %>

extends 屬性:

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

例如,下麵的指令指示JSP轉換生成的servlet使得servlet的擴展somePackage.SomeClass:

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

import 屬性:

import 屬性提供相同的功能,並可用作Java的import語句。對於導入選項的值是你要導入的包的名稱。

若要導入java.sql.*,使用下麵的page指令:

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

要導入您可以指定它們用逗號如下分隔的多個程序包:

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

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

info 屬性:

該信息屬性可以讓你提供了JSP的描述。下麵是一個編碼的例子:

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

isThreadSafe 屬性:

isThreadSafe選項標誌著一個頁麵作為是線程安全的。默認情況下,所有的JSP被認為是線程安全的。如果您將isThreadSafe選項設置為false,JSP引擎使得隻有一個線程在同一時間正在執行您的JSP確定。

下頁指令設置isThreadSafe選項設置為false:

<%@ page isThreadSafe="false"  %>

language 屬性:

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

例如,因為您通常使用Java作為腳本語言,你的語言選項看起來像這樣:

<%@ page language="java" %>

session 屬性:

會話屬性指示JSP頁麵是否使用HTTP會話。值為true意味著JSP頁麵可以訪問一個內建的會話對象和false表示的值的JSP頁麵不能訪問內置的session對象。

下列指令允許JSP頁麵使用任何內置的會話對象的方法,如session.getCreationTime()或session.getLastAccessTime():

<%@ page session="true" %>

isELIgnored 屬性:

isELIgnored選項使您可以禁用表達式語言(EL)表達式的計算能力已在JSP 2.0中被引入

該屬性的默認值為true,這意味著表達式,${...},評估所決定的JSP規範。如果該屬性設置為false,則表達式不計算,而是視為靜態文本。

下麵的指令設置一個表達式不進行計算:

<%@ page isELIgnored="false" %>

isScriptingEnabled 屬性:

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

默認值(true),使scriptlet,表達式和聲明。如果該屬性的值設置為false,翻譯時錯誤會在JSP中使用任何scriptlet以便得到拋出,表達式(非EL),或聲明。

如果你想限製使用的小腳本,表達式(非EL),或聲明該值設置為false:

<%@ page isScriptingEnabled="false" %>