JSP初學者看的好文章[推薦]

javaprogramers發表於2006-05-13
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 名字區分大小寫.

相關文章