HTML?注釋?

在客戶端顯示一個注釋.?

JSP?語法
<!--?comment?[?<%=?expression?%>?]?-->?
例子?1
<!--?This?file?displays?the?user?login?screen?-->?
在客戶端的HTML源代碼中產生和上面一樣的數據:?

<!--?This?file?displays?the?user?login?screen?-->?
例子?2
<!--?This?page?was?loaded?on?<%=?(new?java.util.Date()).toLocaleString()?%>?-->?
在客戶端的HTML源代碼中顯示為:?

<!--?This?page?was?loaded?on?January?1,?2000?-->?
描述
這種注釋和HTML中很像,也就是它可以在"查看源代碼\"中看到.?

唯一有些不同的就是,你可以在這個注釋中用表達式(例子2所示).這個表達示是不定的,由頁面不同而不同,你能夠使用各種表達式,只要是合法的就行。更多的請看表達式



隱藏注釋?


寫在JSP程序中,但不是發給客戶。?

JSP?語法
<%--?comment?--%>?
例子:
CODE:

<%@?page?language="java"?%>?
<html>?
<head><title>A?Comment?Test</title></head>?
<body>?
<h2>A?Test?of?Comments</h2>?
<%--?This?comment?will?not?be?visible?in?the?page?source?--%>?
</body>?
</html>?


描述
用隱藏注釋標記的字符會在JSP編譯時被忽略掉。這個注釋在你希望隱藏或注釋你的JSP程序時是很有用的。JSP編譯器不是會對<%--and--%>之間的語句進行編譯的,它不會顯示在客戶的瀏覽器中,也不會在源代碼中看到?

聲明?


在JSP程序中聲明合法的變量和方法?

JSP?語法
<%!?declaration;?[?declaration;?]+?...?%>?
例子
<%!?int?i?=?0;?%>?
<%!?int?a,?b,?c;?%>?
<%!?Circle?a?=?new?Circle(2.0);?%>?
描述
聲明你將要在JSP程序中用到的變量和方法。你也必須這樣做,不然會出錯.?

你可以一次性聲明多個變量和方法,只要以";"結尾就行,當然這些聲明在Java中要是合法的。?

當你聲明方法或變量時,請注意以下的一些規則:?

聲明必須以";"結尾(Scriptlet有同樣的規則,但是?表達式就不同了).?
你可以直接使用在<%?@?page?%>中被包含進來的已經聲明的變量和方法,不需要對它們重新進行聲明.?
一個聲明僅在一個頁面中有效。如果你想每個頁面都用到一些聲明,最好把它們寫成一個單獨的文件,然后用<%@?include?%>或<jsp:include?>元素包含進來。?


表達式?


包含一個符合JSP語法的表達式?

JSP?語法
<%=?expression?%>?
例子
<font?color="blue"><%=?map.size()?%></font>?
<b><%=?numguess.getHint()?%></b>.?
描述
表達式元素表示的是一個在腳本語言中被定義的表達式,在運行后被自動轉化為字符串,然后插入到這個表達示在JSP文件的位置顯示。因為這個表達式的值已經被轉化為字符串,所以你能在一行文本中插入這個表達式(形式和ASP完全一樣).?

當你在JSP中使用表達式時請記住以下幾點:?

你不能用一個分號(";")來作為表達式的結束符.但是同樣的表達式用在scriptlet中就需要以分號來結尾了!查看Scriptlet?
這個表達式元素能夠包括任何在Java?Language?Specification中有效的表達式.?
有時候表達式也能做為其它JSP元素的屬性值.一個表達式能夠變得很復雜,它可能由一個或多個表達式組成,這些表達式的順序是從左到右。?


[/b]Scriptlet?[/b]


包含一個有效的程序段.?

JSP?語法
<%?code?fragment?%>?
例子
<%?
String?name?=?null;?
if?(request.getParameter("name")?==?null)?{?
%>?
<%@?include?file="error.html"?%>?
<%?
}?else?{?
foo.setName(request.getParameter("name"));?
if?(foo.getName().equalsIgnoreCase("integra"))?
name?=?"acura";?
if?(name.equalsIgnoreCase(?"acura"?))?{?
%>?
描述
一個scriptlet能夠包含多個jsp語句,方法,變量,表達式?

因為scriptlet,我們便能做以下的事:?

聲明將要用到的變量或方法(參考?聲明).?
編寫JSP表達式(參考?表達式).?
使用任何隱含的對象和任何用<jsp:useBean>聲明過的對象?
編寫JSP語句?(如果你在使用Java語言,這些語句必須遵從Java?Language?Specification,).?
任何文本,HTML標記,JSP元素必須在scriptlet之外?
當JSP收到客戶的請求時,scriptlet就會被執行,如果scriptlet有顯示的內容,這些顯示的內容就被存在out對象中。?


Include?指令


在JSP中包含一個靜態的文件,同時解析這個文件中的JSP語句.?

JSP?語法
<%@?include?file="relativeURL"?%>?
例子
include.jsp:?
CODE:

<html>?
<head><title>An?Include?Test</title></head>?
<body?bgcolor="white">?
<font?color="blue">?
The?current?date?and?time?are?
<%@?include?file="date.jsp"?%>?
</font>?
</body>?
</html>?


date.jsp:
CODE:
?
<%@?page?import="java.util.*"?%>?
<%=?(new?java.util.Date()?).toLocaleString()?%>?


Displays?in?the?page:?
The?current?date?and?time?are?
Aug?30,?1999?2:38:40?

描述
<%@include?%>指令將會在JSP編譯時插入一個包含文本或代碼的文件,當你使用<%@?include?%>指命時,這個包含的過程就當是靜態的。靜態的包含就是指這個被包含的文件將會被插入到JSP文件中去,這個包含的文件可以是JSP文件,HTML文件,文本文件。如果包含的是JSP文件,這個包含的JSP的文件中代碼將會被執行。?

如果你僅僅只是用include?來包含一個靜態文件。那么這個包含的文件所執行的結果將會插入到JSP文件中放<%?@?include?%>的地方。一旦包含文件被執行,那么主JSP文件的過程將會被恢復,繼續執行下一行.?

這個被包含文件可以是html文件,jsp文件,文本文件,或者只是一段Java代碼,但是你得注意在這個包含文件中不能使用<html>,</html>,<body>,</body>標記,因為這將會影響在原JSP文件中同樣的標記?,這樣做有時會導致錯誤.?

有一些<%@?include?%>指命的行為是以特殊的JSP編譯條件為基礎,比如:?

這個被包含的文件必須對所有客戶都有開放且必須f有效,或者它有安全限制?
如果這個包含文件被改變,包含此文件的JSP文件將被重新編譯?
屬性:
file="relativeURL"
這個包含文件的路徑名一般來說是指相對路徑,不需要什么端口,協議,和域名,如下:?

"error.jsp""templates/onlinestore.html""/beans/calendar.jsp"?

如果這個路徑以"/"開頭,那么這個路徑主要是參照JSP應用的上下關系路徑,如果路徑是以文件名或目錄名開頭,那么這個路徑就是正在使用的JSP文件的當前路徑.


Page?指令


定義JSP文件中的全局屬性.?

JSP?語法
<%@?page?
[?language="java"?]?
[?extends="package.class"?]?
[?import="{package.class?|?package.*},?..."?]?
[?session="true?|?false"?]?
[?buffer="none?|?8kb?|?sizekb"?]?
[?autoFlush="true?|?false"?]?
[?isThreadSafe="true?|?false"?]?
[?info="text"?]?
[?errorPage="relativeURL"?]?
[?contentType="mimeType?[?;charset=characterSet?]"?|?"text/html?;?charset=ISO-8859-1"?]?
[?isErrorPage="true?|?false"?]?
%>?
例子
<%@?page?import="java.util.*,?java.lang.*"?%>?
<%@?page?buffer="5kb"?autoFlush="false"?%>?
<%@?page?errorPage="error.jsp"?%>?
描述
<%@?page?%>指令作用于整個JSP頁面,同樣包括靜態的包含文件。但是<%?@?page?%>指令不能作用于動態的包含文件,比如?<jsp:include>?

你可以在一個頁面中用上多個<%?@?page?%>指令,但是其中的屬性只能用一次,不過也有個例外,那就是import屬性。因為import屬性和Java中的import語句差不多(參照Java?Language),所以你就能多用此屬性幾次了.?

無論你把<%?@?page?%>指令放在JSP的文件的哪個地方,它的作用范圍都是整個JSP頁面。不過,為了JSP程序的可讀性,以及好的編程習慣,最好還是把它放在JSP文件的頂部.?

屬性
language="java"
聲明腳本語言的種類,暫時只能用"java"?

extends="package.class"
標明JSP編譯時需要加入的Java?Class的全名,但是得慎重的使用它,它會限制JSP的編譯能力.?

import="{package.class?|?package.*?},?..."
需要導入的Java包的列表,這些包就作用于程序段,表達式,以及聲明。?

下面的包在JSP編譯時已經導入了,所以你就不需要再指明了:?

java.lang.*?
javax.servlet.*?
javax.servlet.jsp.*?
javax.servlet.http.*?

session="true?|?false"
設定客戶是否需要HTTP?Session.(學過ASP的人,應該對它不陌生)如果它為true,那么Session是有用的。?

如果它有false,那么你就不能使用session對象,以及定義了scope=session的<jsp:useBean>元素。這樣的使用會導致錯誤.?

缺省值是true.?

buffer="none?|?8kb?|?sizekb"
buffer的大小被out對象用于處理執行后的JSP對客戶瀏覽器的輸出。缺省值是8kb?

autoFlush="true?|?false"
設置如果buffer溢出,是否需要強制輸出,如果其值被定義為true(缺省值),輸出正常,如果它被設置為false,如果這個buffer溢出,就會導致一個意外錯誤的發生.如果你把buffer設置為none,那么你就不能把autoFlush設置為false.?

isThreadSafe="true?|?false"
設置Jsp文件是否能多線程使用。缺省值是true,也就是說,JSP能夠同時處理多個用戶的請求,如果設置為false,一個jsp只能一次處理一個請求?

info="text"
一個文本在執行JSP將會被逐字加入JSP中,你能夠使用Servlet.getServletInfo方法取回。?

errorPage="relativeURL"
設置處理異常事件的JSP文件。?

isErrorPage="true?|?false"
設置此頁是否為出錯頁,如果被設置為true,你就能使用exception對象.?

contentType="mimeType?[?;charset=characterSet?]"?|?"text/html;charset=ISO-8859-1"
設置MIME類型?。缺省MIME?類型是:?text/html,?缺省字符集為?ISO-8859-1.


<jsp:forward>


重定向一個HTML文件,JSP文件,或者是一個程序段.?

JSP?語法
<jsp:forward?page={"relativeURL"?|?"<%=?expression?%>"}?/>?
or?
<jsp:forward?page={"relativeURL"?|?"<%=?expression?%>"}?>?
<jsp:param?name="parameterName"?
value="{parameterValue?|?<%=?expression?%>}"?/>+?
</jsp:forward>?
例子
<jsp:forward?page="/servlet/login"?/>?
<jsp:forward?page="/servlet/login">?
<jsp:param?name="username"?value="jsmith"?/>?
</jsp:forward>?
描述
<jsp:forward>標簽從一個JSP文件向另一個文件傳遞一個包含用戶請求的request對象.<jsp:forward>標簽以下的代碼,將不能執行.?

你能夠向目標文件傳送參數和值,在這個例子中我們傳遞的參數名為username,值為scott,如果你使用了<jsp:param>標簽的話,目標文件必須是一個動態的文件,能夠處理參數.?

如果你使用了非緩沖輸出的話,那么使用<jsp:forward>時就要小心。如果在你使用<jsp:forward>之前,jsp文件已經有了數據,那么文件執行就會出錯.?

屬性
page="{relativeURL?|?<%=?expression?%>}"
這里是一個表達式或是一個字符串用于說明你將要定向的文件或URL.這個文件可以是JSP,程序段,或者其它能夠處理request對象的文件(如asp,cgi,php).?

<jsp:param?name="parameterName"?value="{parameterValue?|?<%=?expression?%>}"?/>+
向一個動態文件發送一個或多個參數,這個文件一定是動態文件.?

如果你想傳遞多個參數,你可以在一個JSP文件中使用多個<jsp:param>。name指定參數名,value指定參數值.


<jsp:getProperty>


獲取Bean的屬性值,用于顯示在頁面中?

JSP?語法
<jsp:getProperty?name="beanInstanceName"?property="propertyName"?/>?
例子
<jsp:useBean?id="calendar"?scope="page"?class="employee.Calendar"?/>?
<h2>?
Calendar?of?<jsp:getProperty?name="calendar"?property="username"?/>?
</h2>?
描述
這個<jsp:getProperty>元素將獲得Bean的屬性值,并可以將其使用或顯示在JSP頁面中.在你使用<jsp:getProperty>之前,你必須用<jsp:useBean>創建它.?

<jsp:getProperty>元素有一些限制:?

你不能使用<jsp:getProperty>來檢索一個已經被索引了的屬性?
你能夠和JavaBeans組件一起使用<jsp:getProperty>,但是不能與Enterprise?Bean一起使用。?
屬性
name="beanInstanceName"
bean的名字,由<jsp:useBean>指定?

property="propertyName"
所指定的Bean的屬性名。?

技巧:
在sun的JSP參考中提到,如果你使用<jsp:getProperty>來檢索的值是空值,那么NullPointerException將會出現,同時如果使用程序段或表達式來檢索其值,那么在瀏覽器上出現的是null(空).


<jsp:include>


包含一個靜態或動態文件.?

JSP?語法
<jsp:include?page="{relativeURL?|?<%=?expression%>}"?flush="true"?/>?
or?
<jsp:include?page="{relativeURL?|?<%=?expression?%>}"?flush="true"?>?
<jsp:param?name="parameterName"?value="{parameterValue?|?<%=?expression?%>}"?/>+?
</jsp:include>?
Examples
<jsp:include?page="scripts/login.jsp"?/>?
<jsp:include?page="copyright.html"?/>?
<jsp:include?page="/index.html"?/>?
<jsp:include?page="scripts/login.jsp">?
<jsp:param?name="username"?value="jsmith"?/>?
</jsp:include>?

描述
<jsp:include>元素允許你包含動態文件和靜態,這兩種包含文件的結果是不同的。如果文件僅是靜態文件,那么這種包含僅僅是把包含文件的內容加到jsp文件中去,而如果這個文件動態的,那么這個被包含文件也會被Jsp編譯器執行(這一切與asp相似)?

你不能從文件名上判斷一個文件是動態的還是靜態的,比如aspcn.asp?就有可能只是包含一些信息而已,而不需要執行。<jsp:include>能夠同時處理這兩種文件,因此你就不需要包含時還要判斷此文件是動態的還是靜態的.?

如果這個包含文件是動態的,那么你還可以用<jsp:param>還傳遞參數名和參數值。?

屬性
page="{relativeURL?|?<%=?expression?%>}"
參數為一相對路徑,或者是代表相對路徑的表達式.?

flush="true"
這里你必須使用flush="true",你不能使用false值.缺省值為false?

<jsp:param?name="parameterName"?value="{parameterValue?|?<%=?expression?%>?}"?/>+
<jsp:param>子句能讓你傳遞一個或多個參數給動態文件?

你能在一個頁面中使用多個<jsp:param>來傳遞多個參數,


<jsp:plugin>


執行一個applet或Bean,有可能的話還要下載一個Java插件用于執行它.?

JSP?語法
<jsp:plugin?
type="bean?|?applet"?
code="classFileName"?
codebase="classFileDirectoryName"?
[?name="instanceName"?]?
[?archive="URIToArchive,?..."?]?
[?align="bottom?|?top?|?middle?|?left?|?right"?]?
[?height="displayPixels"?]?
[?width="displayPixels"?]?
[?hspace="leftRightPixels"?]?
[?vspace="topBottomPixels"?]?
[?jreversion="JREVersionNumber?|?1.1"?]?
[?nspluginurl="URLToPlugin"?]?
[?iepluginurl="URLToPlugin"?]?>?
[?<jsp:params>?
[?<jsp:param?name="parameterName"?value="{parameterValue?|?<%=?expression?%>}"?/>?]+?
</jsp:params>?]?

[?<jsp:fallback>?text?message?for?user?</jsp:fallback>?]?

</jsp:plugin>?

例子
<jsp:plugin?type=applet?code="Molecule.class"?codebase="/html">?
<jsp:params>?
<jsp:param?name="molecule"?value="molecules/benzene.mol"?/>?
</jsp:params>?
<jsp:fallback>?
<p>Unable?to?load?applet</p>?
</jsp:fallback>?
</jsp:plugin>?
描述
<jsp:plugin>元素用于在瀏覽器中播放或顯示一個對象(典型的就是applet和Bean),而這種顯示需要在瀏覽器的java插件。?

當Jsp文件被編譯,送往瀏覽器時,<jsp:plugin>元素將會根據瀏覽器的版本替換成<object>或者<embed>元素。注意,<object>用于HTML?4.0?,<embed>用于HTML?3.2.?

一般來說,<jsp:plugin>元素會指定對象是Applet還是Bean,同樣也會指定class的名字,還有位置,另外還會指定將從哪里下載這個Java插件。具體如下:?

屬性
type="bean?|?applet"
.將被執行的插件對象的類型,你必須得指定這個是Bean還是applet,因為這個屬性沒有缺省值.?

code="classFileName"
將會被Java插件執行的Java?Class的名字,必須以.class結尾。這個文件必須存在于codebase屬性指定的目錄中.?

codebase="classFileDirectoryName"
將會被執行的Java?Class文件的目錄(或者是路徑),如果你沒有提供此屬性,那么使用<jsp:plugin>的jsp文件的目錄將會被使用.?

name="instanceName"
這個Bean或applet實例的名字,它將會在Jsp其它的地方調用.?

archive="URIToArchive,?..."
一些由逗號分開的路徑名,這些路徑名用于預裝一些將要使用的class,這會提高applet的性能.?

align="bottom?|?top?|?middle?|?left?|?right"
圖形,對象,Applet的位置,有以下值:?

bottom?
top?
middle?
left?
right?
height="displayPixels"?width="displayPixels"
Applet或Bean將要顯示的長寬的值,此值為數字,單位為象素.?

hspace="leftRightPixels"?vspace="topBottomPixels"
Applet或Bean顯示時在屏幕左右,上下所需留下的空間,單位為象素.?

jreversion="JREVersionNumber?|?1.1"?
Applet或Bean運行所需的Java?Runtime?Environment?(JRE)?的版本.?缺省值是?1.1.?

nspluginurl="URLToPlugin"?
Netscape?Navigator用戶能夠使用的JRE的下載地址,此值為一個標準的URL,如http://www.aspcn.com/jsp?

iepluginurl="URLToPlugin"
IE用戶能夠使用的JRE的下載地址,此值為一個標準的URL,如http://www.aspcn.com/jsp?

<jsp:params>?[?<jsp:param?name="parameterName"?value="{parameterValue?|?<%=?expression?%>}"?/>?]+?</jsp:params>
你需要向applet或Bean傳送的參數或參數值。?

<jsp:fallback>?text?message?for?user?</jsp:fallback>
一段文字用于Java?插件不能啟動時顯示給用戶的,如果插件能夠啟動而applet或Bean不能,那么瀏覽器會有一個出錯信息彈出.


<jsp:setProperty>


設置Bean中的屬性值.?

JSP語法
<jsp:setProperty?
name="beanInstanceName"?
{?
property=?"*"?|?
property="propertyName"?[?param="parameterName"?]?|?
property="propertyName"?value="{string?|?<%=?expression?%>}"?
}?
/>?
例子
<jsp:setProperty?name="mybean"?property="*"?/>?
<jsp:setProperty?name="mybean"?property="username"?/>?
<jsp:setProperty?name="mybean"?property="username"?value="Steve"?/>?
描述
<jsp:setProperty>元素使用Bean給定的setter方法,在Bean中設置一個或多個屬性值。你在使用這個元素之前必須得使用<jsp:useBean>聲明此Bean.因為,<jsp:useBean>和<jsp:setProperty>是聯系在一起的,同時這他們使用的Bean實例的名字也應當相匹配(就是說,在<jsp:setProperty>中的name的值應當和<jsp:useBean>中id的值相同)?

你能使用多種方法利用<jsp:setProperty>來設定屬性值?:?

通過用戶輸入的所有值(被做為參數儲存中request對象中)來匹配Bean中的屬性?
通過用戶輸入的指定的值來匹配Bean中指定的屬性?
在運行時使用一個表達式來匹配Bean的屬性?
每一種設定屬性值的方法都有其特定的語法,下面我們會來講解?

屬性及其用法
name="beanInstanceName"
表示已經在<jsp:useBean>中創建的Bean實例的名字.?

property="*"
儲存用戶在Jsp輸入的所有值,用于匹配Bean中的屬性。在Bean中的屬性的名字必須和request對象中的參數名一致.?

從客戶傳到服器上的參數值一般都是字符類型?,這些字符串為了能夠在Bean中匹配就必須轉換成其它的類型,下面的表中列出了Bean屬性的類型以及他們的轉換方法.

把字符串轉化為其它類型的方法.?Property?類型?
方法?
boolean?or?Boolean?
java.lang.Boolean.valueOf(String)?
byte?or?Byte?
java.lang.Byte.valueOf(String)?
char?or?Character?
java.lang.Character.valueOf(String)?
double?or?Double?
java.lang.Double.valueOf(String)?
integer?or?Integer?
java.lang.Integer.valueOf(String)?
float?or?Float?
java.lang.Float.valueOf(String)?
long?or?Long?
java.lang.Long.valueOf(String)?

如果request對象的參數值中有空值,那么對應的Bean屬性將不會設定任何值。同樣的,如果Bean中有一個屬性沒有與之對應的Request參數值,那么這個屬性同樣也不會設定.?

property="propertyName"?[?param="parameterName"?]
使用request中的一個參數值來指定Bean中的一個屬性值。在這個語法中,property指定Bean的屬性名,param指定request中的參數名.?

如果bean屬性和request參數的名字不同,那么你就必須得指定property和param?,如果他們同名,那么你就只需要指明property就行了.?

如查參數值為空(或未初始化),對應的Bean屬性不被設定.?

property="propertyName"?value="{string?|?<%=?expression?%>}"
使用指定的值來設定Bean屬性。這個值可以是字符串,也可以是表達式。如果這個字符串,那么它就會被轉換成Bean屬性的類型(查看上面的表).如果它是一個表達式,那么它類型就必須和它將要設定的屬性值的類型一致。?

如果參數值為空,那么對應的屬性值也不會被設定。另外,你不能在一個<jsp:setProperty>中同時使用param和value?

技巧
如果你使用了property="*",那么Bean的屬性沒有必要按Html表單中的順序排序?


<jsp:useBean>


創建一個Bean實例并指定它的名字和作用范圍.?

JSP?語法
<jsp:useBean?
id="beanInstanceName"?
scope="page?|?request?|?session?|?application"?
{?
class="package.class"?|?
type="package.class"?|?
class="package.class"?type="package.class"?|?
beanName="{package.class?|?<%=?expression?%>}"?type="package.class"?
}?
{?
/>?|?
>?other?elements?</jsp:useBean>?
}?
例子
<jsp:useBean?id="cart"?scope="session"?class="session.Carts"?/>?
<jsp:setProperty?name="cart"?property="*"?/>?
<jsp:useBean?id="checking"?scope="session"?class="bank.Checking"?>?
<jsp:setProperty?name="checking"?property="balance"?value="0.0"?/>?
</jsp:useBean>?

描述
<jsp:useBean>用于定位或示例一個JavaBeans組件。<jsp:useBean>首先會試圖定位一個Bean實例,如果這個Bean不存在,那么<jsp:useBean>就會從一個class或模版中進行示例。?

為了定位或示例一個Bean,<jsp:useBean>會進行以下步聚,順序如下:?

通過給定名字和范圍試圖定位一個Bean.?
對這個Bean對象引用變量以你指定的名字命名.?
如果發現了這個Bean,將會在這個變量中儲存這個引用。如果你也指定了類型,那么這個Bean也設置為相應的類型.?
如果沒有發現這個Bean,將會從你指定的class中示例,并將此引用儲存到一個新的變量中去。如果這個class的名字代表的是一個模版,那么這個Bean被java.beans.Beans.instantiate示例.?
如果<jsp:useBean>已經示例(不是定位)了Bean,同時<jsp:useBean>和</jsp:useBean>中有元素,那么將會執行其中的代碼.?
<jsp:useBean>元素的主體通常包含有<jsp:setProperty>元素,用于設置Bean的屬性值。正如上面第五步所說的,<jsp:useBean>的主體僅僅只有在<jsp:useBean>示例Bean時才會被執行,如果這個Bean已經存在,<jsp:useBean>能夠定位它,那么主體中的內容將不會起作用?

屬性以及用法
id="beanInstanceName"
在你所定義的范圍中確認Bean的變量,你能在后面的程序中使用此變量名來分辨不同的Bean?

這個變量名對大小寫敏感,必須符合你所使用的腳本語言的規定,在Java?Programming?Language中,這個規定在Java?Language?規范已經寫明。如果這個Bean已經在別的<jsp:useBean>中創建,那么這個id的值必須與原來的那個id值一致.?

scope="page?|?request?|?session?|?application"
Bean存在的范圍以及id變量名的有效范圍。缺省值是page,以下是詳細說明:?

page?-?你能在包含<jsp:useBean>元素的JSP文件以及此文件中的所有靜態包含文件中使用Bean,直到頁面執行完畢向客戶端發回響應或轉到另一個文件為止。
???
request?-?你在任何執行相同請求的Jsp文件中使用Bean,直到頁面執行完畢向客戶端發回響應或轉到另一個文件為止。你能夠使用Request對象訪問Bean,比如request.getAttribute(beanInstanceName)

session?-?從創建Bean開始,你就能在任何使用相同session的Jsp文件中使用Bean.這個Bean存在于整個Session生存周期內,任何在分享此Session的Jsp文件都能使用同一Bean.注意在你創建Bean的Jsp文件中<%?@?page?%>指令中必須指定session=true

application?-?從創建Bean開始,你就能在任何使用相同application的Jsp文件中使用Bean.這個Bean存在于整個application生存周期內,任何在分享此application的Jsp文件都能使用同一Bean.?
class="package.class"
使用new關鍵字以及class構造器從一個class中示例一個bean.這個class不能是抽象的,必須有一個公用的,沒有參數的構造器.這個package的名字區別大小寫。?

type="package.class"
如果這個Bean已經在指定的范圍中存在,那么寫這個Bean一個新的數據庫類型?。如果你沒有使用class或beanName指定type,Bean將不會被示例.package和class的名字,區分大小寫.?

beanName="{package.class?|?<%=?expression?%>}"?type="package.class"
使用java.beans.Beans.instantiate方法來從一個class或連續模版中示例一個Bean,同時指定Bean的類型。?

beanName可以是package和class也可以是表達式,它的值會傳給Beans.instantiate.tupe的值可以和Bean相同。?

package?和?class?名字區分大小寫.