網域查詢: www.
返回首頁
當前位置: 首頁 > 站長學院 > 網站編程 > JSP教程 >

JSP高級編程4

時間:2010-02-17 04:48來源: 作者: 點擊:
第4章JSP的語法和語義 本章將詳細介紹J S P的語法和語義( J S P 1 . 1)。如果讀者接觸過A S P或P H P,將會發現J S P的 語法稍顯復雜;另一方面,如果讀者有J a v a語言程序設計的經驗,就
  


第4章JSP的語法和語義
本章將詳細介紹J S P的語法和語義( J S P 1 . 1)。如果讀者接觸過A S P或P H P,將會發現J S P的
語法稍顯復雜;另一方面,如果讀者有J a v a語言程序設計的經驗,就會覺得J S P相當簡單,其實,
作為J 2 E E的成員,J S P本來就已經成為J a v a的一部分了。
在J S P中,主要包含以下內容︰
指令。指令提供該頁的全局信息,例如,重要的狀態,錯誤處理,是否是s e s s i o n的一部分等。
聲明。頁面範圍的變量和方法的聲明。
腳本。嵌入頁面內j a v a代碼。
表達式。把表達式變成s t r i n g型以便于包含在頁面的輸出中。
下面將一一介紹。
4.1 通用的語法規則
J S P的頁面是由許多的“元素”組成的,本節描述的語法規則對于這些“元素”都是成立的,
所以稱之為“通用”的語法規則,也就是這些元素共有的特性。
4.1.1 元素的語法規則
大部分的J S P元素都基于“ X M L”的語法,這些基于“ X M L”語法的J S P元素一般來說都有
一個包含有元素名稱的起始標志,可能還包含有屬性設置,一些可選項,和一個結束標志。當
然,J S P頁面的起始標記和結束標記一定要在同一個頁面中,有的元素也僅僅有一個包含屬性設
置的標志,舉例如下︰
<mytag attr1="attribute value" ...>
body
</mytag>
<mytab attr1="attribute value" .../>
讀者會發現,前面講述的To m c a t的配置文件s e r v e r. x m l和w e b . x m l中已經使用了這種語法形
式。
腳本元素則使用的是如A S P般的語法︰
<%............%>
實際上,每一個J S P頁面都應該可以轉換為等價的X M L頁面,在下一章中將詳細介紹作為
X M L的J S P。
J S P元素的屬性也和X M L中定義的屬性遵從同樣的原則, J S P頁面的屬性值一定要使用引號
括起來,雙引號(”)和單引號(’)都可以使用。另外,作為替代,也可以使用& a p o s ;
和& q u t o ;來表示雙引號和單引號。
4.1.2 JSP中的相對路徑
在J S P中,可以使用相對路徑來代替絕對路徑,在J S P的語法規範中稱之為“ U R I”,感興趣
的讀者可以在R F C 2 3 9 6中找到比較完整的描述,這里舉幾個例子來說明相對路徑的概念︰
"jspRelativeTest.jsp"
"/ jspRelativeTest.jsp"
"../ jspRelativeTest.jsp"
在這三行代碼中,都假設是在c : \ t o m c a t \ J a k a r t a - t o m c a t \ w e b a p p s \ e x a m p l e s \ j s p \ t e s t . j s p中使用
上述相對路徑。
對于第一行代碼來說,顯然文件j s p R e l a t i v e Te s t . j s p的位置應當為︰ c : \ t o m c a t \ J a k a r t a -
t o m c a t \ w e b a p p s \ e x a m p l e s \ j s p \ j s p R e l a t i v e Te s t . j s p,這是比較容易理解的。但是對于第二行代碼就
要注意了,在J S P中,當相對路徑以“ /”開頭的時候,不是相對于網站的根目錄,而是相對于包
含這個J S P文件的We b應用程序的根目錄,也就應當是︰ c : \ t o m c a t \ J a k a r t a - t o m c a t \ w e b a p p s \
e x a m p l e s \ j s p R e l a t i v e Te s t . j s p。如果讀者對We b應用程序的概念還不清楚,請參見前幾章中的相關
章節。第三行代碼對于熟悉U N I X或D O S命令行方式的讀者應該不陌生,這種情況下,文件
j s p R e l a t i v e Te s t . j s p 的位置應當為︰ c : \ t o m c a t \ J a k a r t a - t o m c a t \ w e b a p p s \ e x a m p l e s \
j s p \ j s p R e l a t i v e Te s t . j s p。
4.2 注釋
一般來說,可以認為在J S P頁面中包含有兩種不同類型的注釋︰一種是J S P本身的,用于描述
J S P程序代碼,另一種是J S P生成的頁面的,也就是H T M L(或W M L . . .)的注釋,用于描述J S P頁面
執行後的結果頁面的功能。H T M L頁面的注釋這里就不說了,下面是J S P本身的注釋語法的例子︰
<%-- 這是一個JSP的注釋--%>
實際上,由于在J S P的“腳本代碼”部分中,也就是後面會提到的“ S c r i p t l e t”直接使用
“<% ...... %>”包含起來的部分中可以使用J a v a的語法,所以下面形式的注釋也就理所當然的可
以使用了︰
<% /*這是一個Scriptlet中的注釋*/ %>
<% /**這也是一個Scriptlet中的注釋,可以用javadoc從生成的Java文件中提取出注釋來*/ %>
4.3 指令
前面已經講過指令在J S P中的地位,指令一般來說有如下的形式︰
<%@ directive {attr="value"} %>
指令的這種語法形式盡管簡單明了,但並不是符合X M L的,第5章將講述指令的X M L語法。
4.3.1 “p a g e”指令
p a g e指令描述了和頁面相關的指示信息。在一個J S P頁面中, p a g e指令可以出現多次,但是
第4章J S P的語法和語義91

每一種屬性卻只能出現一次,重復的屬性設置將覆蓋掉先前的設置。
p a g e指令的基本語法格式如下︰
<%@ page page_directive_attr_list %>
page_directive_attr_list ::= {language=" scriptingLanguage"}
{ extends=" className"}
{ import=" importList"}
{ session="true|false" }
{ buffer="none| sizekb" }
{ autoFlush="true| false" }
{ isThreadSafe="true|false" }
{ info=" info_text" }
{ errorPage=" error_url" }
{ isErrorPage="true|false" }
{ contentType="ctinfo" }
下表4 - 1是對這些屬性的解釋︰
表4 - 1
屬性名和可選值說明
language = “j a v a” 說language 變量告訴s e r v e r在文件中將采用哪種語言,在J S P當前的規
範(J S P 1 . 1)中,j a v a是J S P唯一支持的語法
extends = “p a c k a g e . c l a s s” 說extends 變量定義了由J S P頁面產生的s e r v l e t的父類,一般來說,這
個屬性不會用到,但是當需要實現一些特殊功能時,也是比較方便的
說import 變量和任何一個j a v a程序的第一部分一樣。同樣,它總是被
放在J S P文件的頂部。i m p o r t變量的值是一系列用逗號分開的列表,表
明想要引入的包和類
說注意︰
說java.lang.*
說j a v a x . s e r v l e t . *
說javax.servlet.jsp.* javax.servlet.http.*
說已經缺省地被J S P引擎引入了
session = “t r u e | f a l s e” 說session 變量的缺省值是t r u e,表示當前頁面中將有一個缺省的名為
“s e s s i o n”的對象來表示當前會話。“s e s s i o n”對象的類型是︰
說javax.servlet.http.HttpSession
b u ffer = “n o n e | 8 k b | s i z e k b” 說決定輸出流( o u t對象)是否需要緩沖,缺省值是8 k b。與a u t o F l u s h
一起使用
autoFlush = “t r u e | f a l s e” 說確定是否自動刷新輸出緩沖,如果設成t r u e,則當輸出緩沖區滿的
時候,刷新緩沖區而不是拋出一個異常
isThreadSafe = “t r u e | f a l s e” 說缺省值是t r u e,如果多個客戶請求發向J S P引擎時,可以一次被處理。
J S P程序員要處理同步時共享的狀態,以保證同步時確實是安全的。
說如果i s T h r e a d S a f e被設成f a l s e,則采用單線程模式控制客戶端訪問該

說這沒有使你脫離異常分枝,然而,在s e r v e r可能的情況下,通過它
的判斷,創建該頁的多個實例運行以處理多個裝入的客戶請求。而且,
這無法保證同一個客戶端的連續請求定位到同一個J S P頁面的實例上,
在多個頁面請求之間的共享資源和狀態必須同步
92第一部分JSP 入門

import = “p a c k a g e . * , p a c k a g e . c l a s s”
例如︰
<%@ page import=”j a v a . u t i l . *” % >
(續)
屬性名和可選值說明
info = “t e x t” 說頁面信息通過頁面的S e r v l e t . g e t S e r v l e t I n f o ( )來獲得頁面可以被訪問
的內容的類型
ErrorPage = “p a t h To E r r o r p a g e” 說給出一個J S P文件的相對路徑,這個J S P文件用于處理沒被處理的例
外。這個J S P文件要把i s E r r o r P a g e設成t r u e。
說需要注意的是︰ J S P是通過使用S e r v l e t R e q u e s t對象的s e t A t t r i b u t e ( )方
法將名為j a v a x . s e r v l e t . j s p . j s p E x c e p t i o n的對象存儲起來實現的。
說另外,當A u t o F l u s h設為t r u e的時候,在J s p Wr i t e r中的數據刷新到
S e r v l e t R e s p o n s e中以後,任何從J S P文件到錯誤處理文件的未捕獲異常
將無法被正常發送
isErrorPage = “t r u e | f a l s e” 說標志一個頁面為錯誤處理頁面。設置為t r u e時,在這個J S P頁面中的
缺省對象e x c e p t i o n將被定義,其值將被設定為呼叫此頁面的J S P頁面
的錯誤對象。缺省為f a l s e
說設置J S P文件和最終文件的m i m e類型和字符集的類型。這一項必須
在文件的前部,任何一個其他字符在文件中出現之前。缺省為︰
C o n t e n t Type = “t e x t / h t m l ;
charset = ISO - 8859 -1”
4.3.2 Include指令
i n c l u d e指令的作用是包含另一個文件,其語法相當簡單︰
<%@ include file="......" %>
在這個指令中應該使用前面講述的J S P的相對路徑表示法。需要說明的是, J S P還有另外一
種包含其他文件的方法︰
<jsp:include page="" />
表4 - 2比較了兩者的異同︰
表4 - 2
語法狀態對象描述
<%@ include file=”. . . . . .” % > 編譯時包含靜態擎J S P引擎將對所包含的文件進行
語法分析
<jsp:include page=”” / > 運行時包含靜態和動態擎J S P引擎將不對所包含的文件進
行語法分析
4.3.3 taglib指令
t a g l i b指令用于指示這個J S P頁面所使用的標簽庫,標簽庫的具體用法屬于J S P比較高級的內
容,這里就先不討論了,先講述一下基礎語法︰
<%@ taglib uri=" tagLibraryURI" prefix=" tagPrefix" %>
表4 - 3是對各個屬性的解釋。
第4章J S P的語法和語義93

C o n t e n t Type = “t e x t / h t m l ;
charset = ISO - 8859 -1”
表4 - 3
屬性說明
u r i 描描述這個標簽庫位置的U R I,可以是相對路徑或絕對路徑
t a g P r e f i x 描定義了一個指示使用此標簽庫的前綴,例如將t a g P r e f i x設為m y P r e f i x時,可以使用
下面的語句來使用此標簽庫中的m y Ta g標簽︰
< m y P r e f i x : m y Ta g >
描下面這些前綴已經保留︰
描jsp:, jspx:, java:, javax:, servlet:, sun:, 和s u n w :
描目前,空的t a g P r e f i x將被忽視
4.4 內置對象
為開發的方便,J S P中內置了一些對象,不需要預先聲明就可以在腳本代碼和表達式中隨意使
用,前面已經接觸到的s e s s i o n和e x c e p t i o n就是兩個內置對象,表4 - 4詳細講述J S P中的這些內置對象︰
表4 - 4
對象類型描述作用域
r e q u e s t j a v a x . s e r v l e t . S e r v l e t R e q u e s t的子類作r e q u e s t(用戶請
求期)
response j a v a x . s e r v l e t . S e r v l e t R e s p o n s e的子類作p a g e(頁面執行
期)
p a g e C o n t e x t j a v a x . s e r v l e t . j s p . P a g e C o n t e x t 作p a g e(頁面執行
期)
s e s s i o n j a v a x . s e r v l e t . h t t p . H t t p S e s s i o n 作s e s s i o n (會話
期)
a p p l i c a t i o n j a v a x . s e r v l e t . S e r v l e t C o n t e x t 作a p p l i c a t i o n(整
個We b應用程序運
行期)
out j a v a x . s e r v l e t . j s p . J s p Wr i t e r 作p a g e(頁面執行
期)
c o n f i g j a v a x . s e r v l e t . S e r v l e t C o n f i g 作p a g e(頁面執行
期)
p a g e j a v a . l a n g . O b j e c t 作P a g e(頁面執行
期)
e x c e p t i o n j a v a . l a n g . T h r o w a b l e 作p a g e(頁面執行
期)
94第一部分JSP 入門

客客戶端的請求,通常是H t t p S e r v l e t -
R e q u e s t的子類,如果客戶的請求中有參
數,則該對象就有一個參數列表
客JSP 頁面的響應,是H t t p S e r v l e t R e s -
ponse 的子類
客頁面的屬性和需要通過標準A P I來訪
問的相關對象(本質上是構成服務器環
境來讓J S P運行的一些對象),以便J S P
引擎來編譯頁面。但是,不同s e r v e r對
這些屬性和對象的實現方式不同
客解決方案是J S P引擎編譯用factory 類返
回的服務器的PageContext 類的實現方
法。P a g e C o n t e x t類和r e q u e s t、response 對
象以及p a g e指令的一些屬性( e r r o r p a g e
, s e s s i o n , b u ff e r, a u t o f l u s h)同時被初始化,
同時提供r e q u e s t請求的相關的對象
客HTTP session 是與r e q u e s t聯合的對象
客s e r v l e t的環境通過調用g e t S e r v l e t C o n f i g
(). g e t C o n t e x t()方法獲得
客代表輸出流的對象
客頁面的S e r v l e t C o n f i g對象
客指向頁面自身的方式(在j a v a代碼中
多以t h i s替代)
客沒有被T h r o w a b l e捕獲的錯誤。傳向
了e r r o r p a g e的U R I
4.5 腳本元素
在J S P中,主要的程序部分就是腳本元素,其中包括三個部分︰聲明( De c l a r a t i o n)、表達式
(Ex p r e s s i o n)和代碼(Sc r i p t l e t)。從功能上講,聲明用于聲明一個或多個變量,表達式將是一
個完整的語言表達式,而代碼部分將是一些程序片斷。
三個腳本元素的基本語法都是以一個“ < %”開頭,而以一個“ % >”結尾的。
聲明的例子︰
<%! this is a declaration %>
代碼的例子︰
<% this is a scriptlet %>
表達式的例子︰
<%= this is an expression %>
腳本元素也具有相應的X M L兼容語法,將在第6章介紹。
4.5.1 聲明
J S P中的聲明用于聲明一個或多個變量和方法,並不輸出任何的文本到o u t輸出流去。在聲明
元素中聲明的變量和方法將在J S P頁面初始化時初始化。
語法為︰
<%! declaration(s) %>
舉例如下︰
<%! int i = 0; %>
<%! public String f(int i) { if (i<3) return("..."); ... } %>
實際上,聲明變量和方法的語句完全可以放在S c r i p t l e t中,兩者有什麼不一樣呢?放在
< % ! . . . . . . % >中的聲明語句在編譯為S e r v l e t的時候將作為類的屬性而存在,而放在S c r i p t l e t中的聲
明將在類的方法內部被聲明。
4.5.2 表達式
J S P中的表達式可以被看作一種簡單的輸出形式,需要注意的是,表達式一定要有一個可以
輸出的值才行。
語法為︰
<%= expression %>
舉例如下︰
<%= (new java.util.Date()).toLocaleString() %>
4.5.3 腳本代碼
所謂腳本代碼,就是S c r i p t l e t,也就是J S P中的代碼部分,在這個部分中可以使用幾乎任何
第4章J S P的語法和語義95

J a v a的語法。
語法為︰
<% scriptlet %>
舉例如下︰
<%
if (Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM) {
%>
Good Morning
<%
} else {
%>
Good Afternoon
<%
}
%>
4.6 動作
動作可以影響輸出的文本流,使用、編輯、建立對象。在J S P中,有一些基本的動作,用戶
也可以添加自己的動作,這需要使用標簽庫的知識。J S P中的動作是完全基于X M L的,下面就來
看看J S P由哪些標準的動作以及具有哪些屬性。
4.6.1 id和s c o p e屬性
i d屬性和s c o p e屬性是每一個J S P動作都具有的屬性,其中i d表示一個動作的名稱,而s c o p e則
表示一個動作的作用域。
s c o p e作用域的取值如表4 - 5所示。
表4 - 5
作用域取值有效範圍
p a g e 由j a v a x . s e r v l e t . j s p . P a g e C o n t e x t得到在用戶請求此頁面的過程中有效
r e q u e s t 由S e r v l e t R e q u e s t . g e t A t t r i b u t e ( n a m e )得到在用戶的整個請求過程中有效
s e s s i o n 由H t t p S e s s i o n . g e t Value( name)得到在用戶的整個會話期內有效
a p p l i c a t i o n 由ServletContext. getAttribute(name)得到在We b應用程序執行期間有效
4.6.2 標準動作
J S P規範書中規定了一些標準的動作,凡是符合J S P規範的J S P引擎都應當實現這些標準的動
作,下面將一一介紹J S P 1 . 1中規定的標準動作。
1. <jsp:useBean>
< j s p : u s e B e a n >大概是J S P中最重要的一個動作,使用這個動作, J S P可以動態使用J a v a B e a n s
組件來擴充J S P的功能,由于J a v a B e a n s在開發上及< j s p : u s e B e a n >在使用上的簡單明了,使得J S P
96第一部分JSP 入門

的開發過程和以往其他動態網頁開發工具有了本質上的區別。盡管A S P等動態網頁技術也可以使
用組件技術,但是由于A c t i v e X控件編寫上的復雜和使用上的不方便,實際的開發工作中組件技
術使用得並不多。
< j s p : u s e B e a n >的語法如下︰
<jsp:useBean id=" name" scope="page|request|session|application"
typeSpec />
typeSpec ::= class=" className" |
class=" className" type=" typeName" |
type=" typeName" class=" className" |
beanName=" beanName" type=" typeName" |
type=" typeName" beanName=" beanName" |
type=" typeName"
如果在< j s p : u s e B e a n >中需要加入其他的元素,那麼使用下面的語法︰
<jsp:useBean id=" name" scope="page|request|session|application"
typeSpec >
body
</jsp:useBean>
這里有幾個語法的例子︰
<jsp:useBean id="connection" class="com.myco.myapp.Connection" />
<jsp:useBean id="connection" class="com.myco.myapp.Connection">
<jsp:setProperty name="connection" property="timeout" value="33">
/jsp:useBean>
在下面的這個例子中,這個JavaBeans對象具有會話期作用域,並且在當前會話中已經存在了。
<jsp:useBean id="wombat" type="my.WombatType" scope="session"/>
如果這個對象不存在的話,將拋出一個C l a s s C a s t E x c e p t i o n異常。
2. <jsp:setProperty>
< j s p : s e t P r o p e r t y >動作用于向一個J a v a B e a n的屬性賦值,需要注意的是,在這個動作中將會
使用到的n a m e屬性的值將是一個前面已經使用< j s p : u s e B e a n >動作引入的J a v a B e a n的名字。
表4 - 6說明了在使用< j s p : s e t P r o p e r t y >時的類型轉換,不過在客戶端請求時使用< j s p : s e t P r o p e r t y >
設定J a v a B e a n的屬性可以使用任何類型,J S P文件的執行中也不會自動地進行類型轉換。
表4 - 6
屬性類型由S t r i n g類型轉換所使用的方法
b o o l e a n j a v a . l a n g . B o o l e a n . v a l u e O f ( S t r i n g )
B o o l e a n
b y t e j a v a . l a n g . B y t e . v a l u e O f ( S t r i n g )
B y t e
i n t j a v a . l a n g . I n t e g e r. v a l u e O f ( S t r i n g )
I n t e g e r
c h a r j a v a . l a n g . C h a r a c t e r. v a l u e O f ( S t r i n g )
C h a r a c t e r
第4章J S P的語法和語義97

(續)
屬性類型由S t r i n g類型轉換所使用的方法
d o u b l e j a v a . l a n g . D o u b l e . v a l u e O f ( S t r i n g )
D o u b l e
f l o a t j a v a . l a n g . F l o a t . v a l u e O f ( S t r i n g )
F l o a t
l o n g j a v a . l a n g . L o n g . v a l u e O f ( S t r i n g )
L o n g
< j s p : s e t P r o p e t y >的語法如下︰
<jsp:setProperty name=" beanName" prop_expr />
prop_expr ::= property="*" |
property=" propertyName"|
property=" propertyName" param=" parameterName"|
property=" propertyName" value=" propertyValue"
propertyValue ::= string
表4 - 7是屬性及其解釋
表4 - 7
屬性名描述
p r o p e r t y 此此屬性表明了需要設定值的J a v a B r e a n屬性的名稱。
此這里有一個很有意思的特殊的p r o p e r t y設定︰當一個p r o p e r t y設定為“ *”時, J S P解釋器將
把系統S e r v l e t R e q u e s t對象中的參數一個一個的列舉出來,檢查這個J a v a B e a n的屬性是否和
S e r v k e t R e q u e s t對象中的參數有相同的名稱。如果有,就自動將S e r v l e t R e q u e s t對象中參數值傳
遞給相應的J a v a B e a n屬性
p a r a m 此這個屬性表明了在由系統的R e q u e s t向J a v a B e a n傳遞參數時具體采用哪一個R e q u e s t。具體到
We b頁面,也就是哪一個F o r m
v a l u e 此這個屬性表明了需要設定給J a v a B e a n屬性的值,可以是直接賦值,也可以是S e r v l e t R e q u e s t
對象的一個參數名
下面就< j s p : s e t P r o p e r t y >動作舉幾個例子︰
將S e r v l e t R e q u e s t對象r e q u e s t中的參數全部輸入到名為r e q u e s t的J a v a B e a n中︰
<jsp:setProperty name="request" property="*" />
將S e r v l e t R e q u e s t對象u s e r中的參數u s e r n m e輸入到名為u s e r的J a v a B e a n中︰
<jsp:setProperty name="user" property="user" param="username" />
將值“i + 1”計算出來後輸入到名為r e s u l t s的J a v a B e a n的屬性r o w中︰
<jsp:setProperty name="results" property="row" value="<%= i+1 %>" />
3. <jsp:getProperty>
< j s p : g e t P r o p e r t y >動作用于從一個J a v a B e a n中得到某個屬性的值,無論原先這個屬性是什麼
類型的,都將被轉換為一個S t r i n g類型的值。
語法如下︰
<jsp:getProperty name=" name" property=" propertyName" />
98第一部分JSP 入門

例如︰
<jsp:getProperty name="user" property="name" />
4. <jsp:include>
< j s p : i n c l u d e >用于引入一個靜態或動態的頁面到一個J S P文件中,這動作僅僅和J s p Wr i t e對象
發生關系。
< j s p : i n c l u d e >動作可以包含一個或幾個< j s p : p a r a m >子動作用于向要引入的頁面傳遞參數。
語法如下︰
<jsp:include page=" urlSpec" flush="true"/>

<jsp:include page=" urlSpec" flush="true">
{ <jsp:param .... /> }
</jsp:include>
屬性f l u s h設定是否自動刷新緩沖區,實際上,在當前的J S P版本( 1 . 1)中, f l u s h設為f a l s e
是沒有任何意義的。
下面是實例︰
<jsp:include page="/templates/copyright.html"/>
5. <jsp:forward>
< j s p : f o r w a r d >用于引導客戶端的請求到另一個頁面或者是另一個S e r v l e t去。
< j s p : f o r w a r d >動作可以包含一個或幾個< j s p : p a r a m >子動作,用于向要引導進入的頁面傳遞
參數。
需要注意,當< j s p : f o r w a r d >動作發生的時候,如果已經有文本被寫入輸出流而且頁面沒有設
置緩沖,那麼將拋出一個I l l e g a l S t a t e E x c e p t i o n的異常。
下面是< j s p : f o r w a r d >的語法︰
<jsp:forward page=" relativeURLspec" />

<jsp:forward page=" urlSpec">
{ <jsp:param .... /> }*
</jsp:forward>
舉例如下︰
<%
String whereTo = "/templates/"+someValue;
%>
<jsp:forward page=’<%= whereTo %>’ />
6. <jsp:param>
< j s p : p a r a m >實際上提供了名稱與值的一種一一對應關系,在< j s p : i n c l u d e >、< j s p : f o r w a r d >和
< j s p : p l u g i n >中常常作為子動作使用。
語法為︰
<jsp:param name=" name" value=" value" />
第4章J S P的語法和語義99

7. <jsp:plugin>
< j s p : p l u g i n >動作為We b開發人員提供了一種在J S P文件中嵌入客戶端運行的J a v a程序(如︰
A p p l e t、J a v a B e a n)的方法。在J S P處理這個動作的時候,將根據客戶端瀏覽器的不同, J S P在執
行以後將分別輸出為O B J E C T或E M B E D這兩個不同的H T M L之素。
下面是< j s p : p l u g i n >的語法︰
<jsp:plugintype="bean|applet"
code=" objectCode"
codebase=" objectCodebase"
{ align=" alignment" }
{ archive=" archiveList" }
{ height=" height" }
{ hspace=" hspace" }
{ jreversion=" jreversion" }
{ name=" componentName" }
{ vspace=" vspace" }
{ width=" width" }
{ nspluginurl=" url" }
{ iepluginurl=" url" } >
{ <jsp:params>
{ <jsp:param name=" paramName" value=" paramValue" /> }+
</jsp:params> }
{ <jsp:fallback> arbitrary_text </jsp:fallback> }
</jsp:plugin>
表4 - 8是對< j s p : p l u g i n >動作的子動作和屬性的詳細說明︰
表4 - 8
子動作或屬性說明
< j s p : p a r a m > 設定Java Applet或J a v a B e a n執行所需要的參數
< j s p : f a l l b a c k > 設定當瀏覽器不支持此項P l u g I n時候應當顯示的內容
t y p e 指示這個對象是一個Java Applet還是一個J a v a B e a n
j r e v e r s i o n 指示這個插件對象執行所需要的J R E版本,缺省情況為“ 1 . 1"
n s p l u g i n u r l 指示對于Netscape Navigator的J R E插件的地址(U R L)
i e p l u g i n u r l 指示對于Internet Explorer的J R E插件的地址( U R L)
c o d e、c o d e b a s e、a l i g n、a r c h i v e、和H T M L中的意義一致
h e i g h t、h s p a c e、n a m e、v s p a c e、
t i t l e、w i d t h
100第一部分JSP 入門

 


頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
最新評論 查看所有評論
發表評論 查看所有評論
請自覺遵守互聯網相關的政策法規,嚴禁發佈色情、暴力、反動的言論。
評價:
表情:
用戶名: 密碼: 驗證碼:
推薦內容