主頁 > 知識庫 > jsp中page指令用法詳解

jsp中page指令用法詳解

熱門標(biāo)簽:電銷機(jī)器人好賣么 杭州語音電銷機(jī)器人軟件 北票市地圖標(biāo)注 四川保險智能外呼系統(tǒng)商家 高德地圖標(biāo)注樣式 電銷機(jī)器人是有一些什么技術(shù) 地圖標(biāo)注線上教程 商洛電銷 杭州ai語音電銷機(jī)器人功能

本文實例講述了jsp中page指令用法。分享給大家供大家參考。具體如下:

一、JSP 指令

JSP 指令(directive)影響由 JSP 頁面生成的 servlet 的整體結(jié)構(gòu)。下面的模板給出指令的兩種可能形式。屬性值兩邊的雙引號可以替換為單引號,但引號標(biāo)記不能完全省略。如果要在屬性值中使用引號,則要在它們之前添加反斜杠,' 使用 \'," 使用 \"

% directive attribute="value" %>
% directive attribute1="value1"
attribute2="value2"
......
attribute3="value3" %>

在 JSP 中,主要有3種類型的指令:page,include 和 taglib。page 指令允許通過類的導(dǎo)入、servlet 超類的定制、內(nèi)容類型的設(shè)置、以及諸如此類的事物來控制 servlet 的結(jié)構(gòu)。page 指令可以放在文檔中的任何地方。第二個指令,include 允許在 JSP 文件轉(zhuǎn)換到 servlet 時,將一個文件插入到 JSP 頁面中。include 指令應(yīng)該放 置在文檔中希望插入文件的地方。第三個指令,taglib,定義自 定義的標(biāo)記標(biāo)簽。

二、JSP page 指令

page 指令可以定義下面這些大小寫敏感的屬性(大致按照使用的頻率列出):import、contentType、pageEncoding、session、isELIgnored(只限 JSP 2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language 和 extends。

2.1 import 屬性

使用 page 指令的 import 屬性指定 JSP 頁面轉(zhuǎn)換成的 servlet 應(yīng)該輸入的包。在 JSP 中,包是絕對必需的。原因是,如果沒有使用包,系統(tǒng)則認(rèn)為所引用的類與當(dāng)前類在同一個包中。例如,假定一個 JSP 頁面包含下面的 scriptlet:

復(fù)制代碼 代碼如下:
% Test t=new Test(); %>

在此,如果 Test 在某個輸入包中,則沒有歧義。但是,如果 Test 不在包中,或者頁面沒有明確地導(dǎo)入 Test 所屬的包,那么系統(tǒng)將會認(rèn)為 Test 就在這個自動生成的 servlet 所在的包中。但問題是自動生成的 servlet 所在的包是未知的!服務(wù)器在創(chuàng)建 servlet 時,常常會根據(jù) JSP 頁面所在的目錄來決定它的包。別的服務(wù)器可能使用其他不同的方式。因此,不能指望不使用包的類能夠正常工作。對于 bean 也同樣如此,因為 bean 不過是遵循某些簡單命名約定和結(jié)構(gòu)約定的類。

默認(rèn)情況下,servlet 導(dǎo)入 java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*,也許還包括一些服務(wù)器特有的包。編寫 JSP 代碼時,絕不要依靠任何自動導(dǎo)入的服務(wù)器特有類。這樣做會使得代碼不可移植。

使用 import 屬性時,可以采用下面兩種形式:

%@ page import="package.class" %>
%@ page import="package.class1, ..., package.classN" %>

例如,下面的指令表示 java.util 包和 cn.foololdfat 包中的所有類在使用時無需給出明確的包標(biāo)識符:

復(fù)制代碼 代碼如下:
%@ page import="java.uti1.*, cn.foololdfat.*" %>

import 是 page 的屬性中惟一允許在同一文檔中多次出現(xiàn)的屬性。盡管 page 指令可以出現(xiàn)在文檔中的任何地方,但一般不是將 import 語句放在文檔頂部附近,就是放在相應(yīng)的包首次使用之前。

2.2 contentType 和 pageEncoding 屬性

contentType 屬性設(shè)置 Content-Type 響應(yīng)報頭,標(biāo)明即將發(fā)送到客戶程序的文檔的 MIME 類型。有關(guān)MIME 類型的更多信息,參見Java Web 開發(fā) (5) HTTP 響應(yīng)報頭。

使用 contentType 屬性時,可以采用下面兩種形式:

%@ page contentType="MIME-TYPE" %>
%@ page contentType="MIME-Type; charset=Character-Set" %>

例如,指令

復(fù)制代碼 代碼如下:
%@ page contentType="application/vnd.ms-excel" %>

和下面的 scriptlet 所起到的作用基木相同

復(fù)制代碼 代碼如下:
% responce.setContentType("application/vnd.ms-excel"); %>

兩種形式的第一點不同是,response.setContentType 使用明確的 Java 代碼(這是一些開發(fā)人員力圖避免使用的方式),而 page 指令只用到 JSP 語法。第二點不同是,指令被特殊處理,它們不是在出現(xiàn)的位置直接成為 _jspService 代碼。這意味著 response.setContentType 能夠有條件地調(diào)用,而 page 指令不能。條件性地設(shè)置內(nèi)容的類型主要用在同一內(nèi)容能夠以多種不同的形式進(jìn)行顯示的情況下。

不同于常規(guī) servlet (默認(rèn)的 MIME 類型為 text/plain),JSP 頁面的默認(rèn) MIME 類型是 text/html (默認(rèn)字符集為 ISO-8859-1)。因此,如果 JSP 頁曲以 Latin 字符集輸出 HTML則根本無需使用 contentType,如果希望同時更改內(nèi)容的類型和字符集,可以使用下面的語句:

復(fù)制代碼 代碼如下:
%@ page contentType="someMimeType; charset=someCharacterSet" %>

但是,如果只想更改字符集,使用 pageEncoding 屬性更為簡單。例如,中文 JSP 頁面可以使用下面的語句:

復(fù)制代碼 代碼如下:
%@ page pageEncoding="GBK" %>

可考慮將Java Web 開發(fā) (5) HTTP 響應(yīng)報頭中生成 Excel 表格的例子用 JSP 實現(xiàn),以體會 contentType 的作用。
2.3 session 屬性
session 屬性控制頁面是否參與 HTTP 會話。使用這個屬性時,可以采用下面兩種形式:

%@ page session="true" %> %--Default--%>
%@ page session="false" %>

true 值(默認(rèn))表示,如果存在已有會話,則預(yù)定義變量 session (類型為HttpSession)應(yīng)該綁定到現(xiàn)有的會話;否則,創(chuàng)建新的會話并將其綁定到 session。false 值表示不自動創(chuàng)建會話,在 JSP 頁面轉(zhuǎn)換成 servlet 時,對變量 session 的訪問會導(dǎo)致錯誤。
對于高流量的網(wǎng)站,使用 session="false" 可以節(jié)省大量的服務(wù)器內(nèi)存。但要注意,session="false" 并不禁用會話跟蹤,它只是阻止 JSP 頁面為那些尚不擁有會話的用戶創(chuàng)建新的會話。由于會話是針對用戶,不是針對貞面,所以,關(guān)閉某個頁面的會話跟蹤沒有任何益處,除非有可能在同一客戶會話中訪問到的相關(guān)頁面都關(guān)閉會話跟蹤。
2.4 isELIgnored 屬性
isELIgnored 屬性控制的是:忽略(true)JSP 2.0 表達(dá)式語言(EL),還是進(jìn)行正常的求值(false)。這是 JSP 2.0 新引入的屬性;在只支持 JSP 1.2 及早期版本的服務(wù)器中,使用這項屬性是不合法的。這個屬性的默認(rèn)值依賴于 Web 應(yīng)用所使用的 web.xml 的版本。如果 web.xml 指定 servlet 2.3(對應(yīng)JSP 1.2)或更早版本,默認(rèn)值為 true(但變更默認(rèn)值依舊是合法的,JSP 2.0 兼容的服務(wù)器中都允許使用這項屬性,不管 web.xml 的版本如何)。如果 web.xml 指定 servlet 2.4(對應(yīng) JSP 2.0)或之后的版本,那么默認(rèn)值為false。使用這個屬性時,可以采用下面兩種形式:

%@ page isELIgnored="false" %>
%@ page isELIgnored="true" %>

2.5 buffer 和 autoFlush 屬性
buffer 屬性指定 out 變量(類型為 JspWriter )使用的緩沖區(qū)的大小。使用這個屬性時,可以采用下面兩種形式:

%@ page buffer="sizekb" %>
%@ page buffer="none" %>

服務(wù)器實際使用的緩沖區(qū)可能比指定的更大,但不會小于指定的大小。例如,%@ page buffer="32kb" %> 表示應(yīng)該對文檔的內(nèi)容進(jìn)行緩存,除非累積至少為32KB、頁面完成或明確地對輸出執(zhí)行清空(例如使用 response. flushBuffer),否則不將文檔發(fā)送給客戶。

默認(rèn)的緩沖區(qū)大小與服務(wù)器相關(guān),但至少8KB。如果要將緩沖功能關(guān)閉,應(yīng)該十分小心:這樣做要求設(shè)置報頭或狀態(tài)代碼的 JSP 元素都要出現(xiàn)在文件的頂部,位于任何 HTML 內(nèi)容之前。另一方面,有時輸出內(nèi)容的每一行都需要較長的生成時間,此時禁用緩沖或使用小緩沖區(qū)會更有效率;這樣,用戶能夠在每一行生成之后立即看到它們,而不是等待更長的時間看到成組的行。

autoFlush 屬性控制當(dāng)緩沖區(qū)充滿之后,是應(yīng)該自動清空輸出緩沖區(qū)(默認(rèn)),還是在緩沖區(qū)溢出后拋出一個異常(autoFlush="false")。使用這個屬性時,可以采用下面兩種形式:

%@ page autoFlush="true" %> %--Default--%>
%@ page autoFlush="false" %>

在 buffer="none" 時,false 值是不合法的。如果客戶程序是常規(guī)的 Web 瀏覽器,那么 autoFlush="false" 的使用極為罕見。但是,如果客戶程序是定制應(yīng)用程序,可能希望確保應(yīng)用程序要么接收到完整的消息,要么根本沒有消息。false 值還可以用來捕獲產(chǎn)生過多數(shù)據(jù)的數(shù)據(jù)庫查詢,但是,一般說來,將這些邏輯放在數(shù)據(jù)訪問代碼中(而非表示代碼)要更好一些。

2.6 info 屬性

info 屬性定義一個可以在 servlet 中通過 getServletInfo 方法獲取的字符串,使用 info 屬性時,采用下面的形式:

復(fù)制代碼 代碼如下:
%@ page info="Some Message" %>

2.7 errorPage 和 isErrorPage 屬性

errorPage 屬性用來指定一個 JSP 頁面,由該頁面來處理當(dāng)前頁面中拋出但未被捕獲的任何異常(即類型為 Throwable 的對象)。它的應(yīng)用方式如下:

復(fù)制代碼 代碼如下:
%@ page errorPaqe="Relative URL" %>

指定的錯誤頁面可以通過 exception 變量訪問拋出的異常。
isErrorPage 屬性表示當(dāng)前頁是否可以作為其他 JSP 頁面的錯誤頁面。使用 isErrorPage 屬性時,可以采用下面兩種形式:

%@ page isErrorPage="true" %>
%@ page isErrorPage="false" %> %--Default--%>

2.8 isThreadSafe 屬性

isThreadSafe 屬性控制由 JSP 頁面生成的 servlet 是允許并行訪問(默認(rèn)),還是同一時間不允許多個請求訪問單個 servlet 實例(isThreadSafe="false")。使用 isThreadSafe 屬性時,可以采用下面兩種形式:

%@ page isThreadSafe="true" %> %--Default--%>
%@page isThreadSafe="false" %>

遺憾的是,阻止并發(fā)訪問的標(biāo)準(zhǔn)機(jī)制是實現(xiàn) SingleThreadModel接口。盡管在早期推薦使用 SingleThreadModel 和 isThreadSafe="false",但最近的經(jīng)驗表明 SingleThreadModel 的設(shè)計很差,使得它基本土毫無用處。因而,應(yīng)該避免使用 isThreadSafe,采用顯式的同步措施取而代之。

2.9 extends 屬性

extends 屬性指定 JSP 頁面所生成的 servlet 的超類(superclass )。它采用下面的形式:

復(fù)制代碼 代碼如下:
%@ page extends="package.class" %>

這個屬性一般為開發(fā)人員或提供商保留,由他們對頁面的運(yùn)作方式做出根本性的改變(如添加個性化特性)。一般人應(yīng)該避免使用這個屬性,除非引用由服務(wù)器提供商專為這種目的提供的類。

2.10 language 屬性

從某種角度講,language 屬性的作用是指定頁面使用的腳本語言,如下所示:

復(fù)制代碼 代碼如下:
%@ page language="java" %>

就現(xiàn)在來說,由于 Java 既是默認(rèn)選擇,也是惟一合法的選擇,所以沒必要再去關(guān)心這個屬性。

希望本文所述對大家的JSP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • JSP常見的三個編譯指令page、include、taglib
  • JSP編譯指令page、include詳解
  • JSP指令元素(page指令/include指令/taglib指令)復(fù)習(xí)整理
  • JSP語法Page指令
  • JSP頁面pageEncoding和contentType屬性
  • JSP errorPage設(shè)置方法
  • 一個通用的jsp分頁P(yáng)ageBean
  • JSP中的編譯指令和動作指令的兩點區(qū)別
  • jsp的常用指令有哪些(編譯指令/動作指令整理)

標(biāo)簽:江西 云浮 青島 丹東 西藏 宿州 貴州 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《jsp中page指令用法詳解》,本文關(guān)鍵詞  jsp,中,page,指令,用法,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《jsp中page指令用法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于jsp中page指令用法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章