主頁(yè) > 知識(shí)庫(kù) > JSP教程(五)-JSP Actions的使用下

JSP教程(五)-JSP Actions的使用下

熱門(mén)標(biāo)簽:長(zhǎng)春回?fù)芡夂粝到y(tǒng)廠(chǎng)家 廣州三五防封電銷(xiāo)卡 地圖標(biāo)注制作道路 地圖標(biāo)注創(chuàng)業(yè)項(xiàng)目入駐 四川電信外呼系統(tǒng)靠譜嗎 珠海銷(xiāo)售外呼系統(tǒng)運(yùn)營(yíng)商 電銷(xiāo)外呼系統(tǒng) 排行榜 山東智能云外呼管理系統(tǒng) 外呼系統(tǒng)啥意思
jsp:useBean Action 的使用

  一、 語(yǔ)法:
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"
}
{ /> |
> 其他元素
/jsp:useBean>
}

  這個(gè)action使您能將一個(gè)JavaBean裝入一個(gè)JSP頁(yè)面。這是一個(gè)非常有用的能力,因?yàn)樗鼓梢允褂每芍赜玫腏AVA類(lèi)而不需犧牲性能。最簡(jiǎn)單的語(yǔ)法用于指定一個(gè)bean:

  jsp:useBean id="name" class="package.class" />

  這通常意味著“實(shí)例化一個(gè)類(lèi)的對(duì)象通過(guò)指定一個(gè)類(lèi),并將之與一個(gè)通過(guò)id指定名稱(chēng)的變量綁定”。然而,就象我們看到的,您可以指定一個(gè)scope屬性來(lái)使得bean不僅僅與當(dāng)前的頁(yè)面相聯(lián)系。在這種情形下,得到一個(gè)對(duì)已存在的bean的引用是非常有用的,而且,僅當(dāng)沒(méi)有相同的id和scope的bean存在時(shí)才創(chuàng)建一個(gè)新的。現(xiàn)在,您已有了bean,您可以通過(guò)jsp:setProperty來(lái)修改它,或者,通過(guò)使用之前用id指定的名字來(lái)使用scriptlet或明確的調(diào)用方法。當(dāng)您說(shuō)“這個(gè)bean有一個(gè)稱(chēng)為foo的X類(lèi)型的屬性”,您真正的意思是“這個(gè)類(lèi)有一個(gè)稱(chēng)為getFoo的方法,它返回X類(lèi)型的某類(lèi)值,還有另一個(gè)方法稱(chēng)為setFoo,它以X為參數(shù)?!边@jsp:setProperty action 將在下一單元詳細(xì)的介紹,但是現(xiàn)在您既可以給出一個(gè)明確的值,給出一個(gè)屬性來(lái)說(shuō)明此值是從request的參數(shù)繼承而來(lái),也可以?xún)H僅列出屬性來(lái)標(biāo)志此值應(yīng)該從與屬性名同名的參數(shù)繼承而來(lái)。您可以通過(guò)調(diào)用適用的getXxx方法,或更普遍的,使用jsp:getProperty action,來(lái)得到已存在的JSP表達(dá)式或scriptlet屬性。

  請(qǐng)注意,為bean指定的類(lèi)必須在服務(wù)器的規(guī)則的類(lèi)路徑下,而不是用來(lái)保留當(dāng)改變時(shí)自動(dòng)裝載的類(lèi)的路徑。例如,在Java Web Server上,它和它所用的類(lèi)必須到類(lèi)的目錄或在lib目錄下的一個(gè)jar文件內(nèi),而不是在servlets的目錄下。

  下面讓我們來(lái)看一個(gè)非常簡(jiǎn)單的例子,它裝載一個(gè)bean并且設(shè)置/得到一個(gè)簡(jiǎn)單的串參數(shù)。

BeanTest.jsp
HTML>
HEAD>
TITLE>Reusing JavaBeans in JSP/TITLE>
/HEAD>
BODY>
CENTER>
TABLE BORDER=5>
TR>TH CLASS="TITLE">
Reusing JavaBeans in JSP/TABLE>
/CENTER>
P>
jsp:useBean id="test" class="hall.SimpleBean" />
jsp:setProperty name="test"
property="message"
value="Hello WWW" />
H1>Message: I>
jsp:getProperty name="test" property="message" />
/I>/H1>
/BODY>
SimpleBean.java

  以下是bean的原代碼:

package hall;
public class SimpleBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}

  運(yùn)行結(jié)果為:頁(yè)面輸出: Reusing JavaBeans in JSP

  b>Message:Hello WWW

  二、jsp:useBean 的詳細(xì)用法

  最簡(jiǎn)單的使用bean的方式是:

  jsp:useBean id="name" class="package.class"/>
  為了裝載bean,需要用jsp:setProperty和 jsp:getProperty來(lái)修改和檢索bean的屬性。且,還有兩種別的選項(xiàng)。首先,您可以使用容器的格式,也就是:

jsp:useBean ...>
Body
/jsp:useBean>

要指出的是,Body部分應(yīng)該僅在bean第一次實(shí)例化時(shí)被執(zhí)行,而不是在每次被找到和使用時(shí)。Beans能夠被共享,因此,并不是所有的jsp:useBean 陳述都產(chǎn)生一個(gè)新的bean的實(shí)例。其次,除了id 或class以外,還有三種屬性您可以使用:scope,type,和beanName。這些屬性總結(jié)如下:

  屬性

  用法

id
  給一個(gè)變量命名,此變量將指向bean。如果發(fā)現(xiàn)存在一個(gè)具有相同的id和scope 的bean則使用之而不新建一個(gè)。

class
  指出bean的完整的包名。

scope
  指明bean在之上可以被使用的前后關(guān)系。有四個(gè)可能的值:page,request,session,和application。缺省為page,表明bean僅在當(dāng)前頁(yè)可用(保存在當(dāng)前的PageContext中)。request的一個(gè)值表明bean僅用于當(dāng)前客戶(hù)端的請(qǐng)求(保存在ServletRequest對(duì)象中)。Session的值指出在當(dāng)前的HttpSession的生命周期內(nèi),對(duì)象對(duì)所有的頁(yè)面可用。 最后,application的值指出對(duì)象對(duì)所有共享ServletsContext的頁(yè)面可以使用。使用jsp:useBean 僅在沒(méi)有相同的id和scope 的bean時(shí)創(chuàng)建一個(gè)新的bean,如果已有則使用之,并忽略以jsp:useBean標(biāo)志開(kāi)始和結(jié)尾的代碼。

type
  指明將指向?qū)ο蟮淖兞康念?lèi)型。這必須與類(lèi)名相匹配或是一個(gè)超類(lèi)或者是一個(gè)實(shí)現(xiàn)類(lèi)的接口。記住,變量的名由id屬性來(lái)指定。

beanName
  賦予bean一個(gè)名字,您應(yīng)該在Beans的實(shí)例化方法中提供。它允許您給出type和一個(gè)beanName,并省略類(lèi)屬性。
  三、jsp:setProperty Action

  語(yǔ)法:

jsp:setProperty
name="beanInstanceName"
{ property="*" |
property="propertyName" [ param="parameterName" ] |
property="propertyName" value="{string | %= expression %>}"
}
/>

  在前面我們就知道了可以使用 jsp:setProperty 來(lái)為一個(gè)bean的屬性賦值。您可以使用兩種方式實(shí)現(xiàn)它。其一是,在jsp:useBean后(而不是在之內(nèi))使用jsp:setProperty:

jsp:useBean id="myName" ... />
...
jsp:setProperty name="myName"
property="someProperty" ... />

  在這種方式中,jsp:setProperty 將被執(zhí)行無(wú)論是否已有一個(gè)具有相同的id和scope的bean存在。另一種方式是,jsp:setProperty出現(xiàn)在jsp:useBean 元素內(nèi),如:

jsp:useBean id="myName" ... >
...
jsp:setProperty name="myName"
property="someProperty" ... />
/jsp:useBean>

  此種情況下,jsp:setProperty僅在新的對(duì)象被實(shí)例化時(shí)才執(zhí)行。

  以下是四種jsp:setProperty的可用的屬性:

  屬性

  用法

name
  這是一個(gè)必選屬性。它指出哪一個(gè)bean的屬性將被設(shè)置。jsp:usebean必須出現(xiàn)在jsp:setProperty之前。

property
  這是一個(gè)必選屬性。表明您將設(shè)置哪一個(gè)屬性。然而,有一個(gè)特殊的情況:如果以"*"為值意味著,所有的名稱(chēng)與bean的屬性匹配的request參數(shù)都將被傳遞到相應(yīng)的屬性設(shè)置方法。
value
  這是一個(gè)可選屬性。它指定被設(shè)置的屬性的值。字符串的值通過(guò)相應(yīng)的對(duì)象或包的標(biāo)準(zhǔn)的valueOf方法將自動(dòng)的轉(zhuǎn)換為numbers,boolean,Boolean,byte,Byte,char,和Character。例如,boolean或Boolean屬性的值“true”將通過(guò)Boolean.valueOf方法轉(zhuǎn)化,而,一個(gè)int或Integer屬性的值“42”將通過(guò)Integer.valueOf轉(zhuǎn)化。您不能同時(shí)使用value和param屬性,但,兩個(gè)都不用是允許的。

param
  這是一個(gè)可選屬性。它指明了bean的屬性應(yīng)該繼承的request的參數(shù)。如果當(dāng)前的request沒(méi)有這樣的一個(gè)參數(shù),就什麼也不做:系統(tǒng)并不將null傳給設(shè)置屬性的方法。因此,您可以使用bean的缺省值。例如下面的這段程序執(zhí)行“將numberOfItems屬性設(shè)置為任意numItems request參數(shù)的值,如果有這樣的一個(gè)request參數(shù),否則什么也不做。”

jsp:setProperty name="orderBean"
property="numberOfItems"
param="numItems" />

  如果您將value和param同時(shí)缺省,這和您將param的名稱(chēng)設(shè)為bean的屬性名相同一樣。您可以通過(guò)將name的值設(shè)置為”*”和省略value和param來(lái)自動(dòng)的使用與bean的屬性相應(yīng)的request的屬性。在這種情況下,服務(wù)器將反復(fù)的查找可用的屬性和request參數(shù)來(lái)匹配具有相同名字的。

  四、jsp:getProperty Action

  語(yǔ)法:

  jsp:getProperty name="beanInstanceName" property="propertyName" />

  這個(gè)屬性檢索出bean的屬性的值并將之轉(zhuǎn)化為一個(gè)字符串,然后將之插入到輸出。它有兩個(gè)必選屬性:name,在之前用jsp:useBean引入的名稱(chēng),property,必須被插入值的屬性。  

標(biāo)簽:廣元 肇慶 紹興 潮州 北海 玉樹(shù) 保定 吳忠

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