JSP動(dòng)作的作用
JSP動(dòng)作利用XML語(yǔ)法格式的標(biāo)記來(lái)控制Servlet引擎的行為。利用JSP動(dòng)作可以動(dòng)態(tài)地插入文件、重用JavaBean組件、把用戶重定向到另外的頁(yè)面、為Java插件生成HTML代碼,通過(guò)標(biāo)記庫(kù)定義自定義標(biāo)記
-----起始標(biāo)記
-----結(jié)束標(biāo)記
-------空標(biāo)記
包括:
﹤jsp:include>
﹤jsp:param>
﹤jsp:forward>
﹤jsp:plugin>
﹤jsp:useBean>
﹤jsp:setProperty>
﹤jsp:getProperty>
﹤jsp:useBean>標(biāo)記
創(chuàng)建Bean或從服務(wù)器獲得現(xiàn)有Bean
語(yǔ)法:
﹤jsp:useBean name" name" />
或者
﹤jsp:useBean name" name ">
初始化代碼
﹤/jsp:useBean>
jsp:useBean動(dòng)作用來(lái)裝載一個(gè)將在JSP頁(yè)面中使用的JavaBean。這個(gè)功能非常有用,因?yàn)樗沟梦覀兗瓤梢园l(fā)揮Java組件重用的優(yōu)勢(shì),同時(shí)也避免了損失JSP區(qū)別于Servlet的方便性 !
獲得Bean實(shí)例之后,要修改Bean的屬性既可以通過(guò)jsp:setProperty動(dòng)作進(jìn)行,也可以在Scriptlet中利用id屬性所命名的對(duì)象變量,通過(guò)調(diào)用該對(duì)象的方法顯式地修改其屬性 .
id屬性-在整個(gè)頁(yè)面引用Bean的唯一值
Bean名稱(chēng)的規(guī)則:
唯一
區(qū)分大小寫(xiě)
第一個(gè)字符必須為字母
不允許有空格
可為同一 Bean 類(lèi)指定不同的 id 值.
class 屬性-JavaBean 的類(lèi)名
---Count Bean不屬于包
﹤jsp:useBean />
-----Count Bean屬于test包
﹤jsp:useBean />
type屬性---------將引用此對(duì)象的變量的類(lèi)型
beanName 屬性-指定串行化Bean的名稱(chēng)
scope 屬性-表明Bean應(yīng)可用的環(huán)境
----page
----session
----request
-----application
page 作用域
將 JavaBean 對(duì)象存儲(chǔ)在當(dāng)前頁(yè)面的 javax.servlet.jsp.PageContext 中
JavaBean 對(duì)象僅可用于當(dāng)前頁(yè)面
session 作用域
將 JavaBean 對(duì)象存儲(chǔ)在 HTTP 會(huì)話中
JavaBean 對(duì)象在當(dāng)前 HttpSession 的生命周期內(nèi)可用于所有頁(yè)面
request 作用域
將 JavaBean 對(duì)象存儲(chǔ)在當(dāng)前 ServletRequest 中
JavaBean 對(duì)象可用于被包括的 JSP 頁(yè)面
application 作用域
將 JavaBean 對(duì)象存儲(chǔ)在 ServletContext 中
JavaBean 對(duì)象可用于共享同一 ServletContext 的所有頁(yè)面
非空 useBean 標(biāo)記僅在新建 Bean 實(shí)例時(shí)才會(huì)處理標(biāo)記的內(nèi)容
﹤jsp:useBean scope="session">
Hello,new user!!!
﹤/jsp:useBean>
﹤jsp:getProperty>標(biāo)記
檢索 Bean 屬性的值,將此值轉(zhuǎn)換成字符串,并插入輸出結(jié)果中
name 屬性-指定 Bean 的名稱(chēng)
property 屬性-指定 Bean 的屬性
﹤jsp:getProperty name" property="property name"/>
﹤jsp:setProperty>標(biāo)記
設(shè)置 Bean 類(lèi)的屬性
name 屬性-指定 Bean 的名稱(chēng)
property 屬性-指定 Bean 的屬性
value 屬性-指定要設(shè)置的值
﹤jsp:setProperty name" property="property name" value="str" />
jsp:setProperty動(dòng)作有下面四個(gè)屬性:
name屬性是必需的。它表示要設(shè)置屬性的是哪個(gè)Bean。
property property屬性是必需的。它表示要設(shè)置哪個(gè)屬性。
有一個(gè)特殊用法:如果property的值是“*”,表示所有名字和Bean屬性名字匹配的請(qǐng)求參數(shù)都將被傳遞給相應(yīng)的屬性set方法。
value屬性是可選的。該屬性用來(lái)指定Bean屬性的值。字符串?dāng)?shù)據(jù)會(huì)在目標(biāo)類(lèi)中通過(guò)標(biāo)準(zhǔn)的valueOf方法自動(dòng)轉(zhuǎn)換成數(shù)字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean類(lèi)型的屬性值(比如“true”)通過(guò)Boolean.valueOf轉(zhuǎn)換,int和Integer類(lèi)型的屬性值(比如“42”)通過(guò)Integer.valueOf轉(zhuǎn)換。
value和param不能同時(shí)使用,但可以使用其中任意一個(gè)
param是可選的。它指定用哪個(gè)請(qǐng)求參數(shù)作為Bean屬性的值。如果當(dāng)前請(qǐng)求沒(méi)有參數(shù),則什么事情也不做,系統(tǒng)不會(huì)把null傳遞給Bean屬性的set方法。因此,你可以讓Bean自己提供默認(rèn)屬性值,只有當(dāng)請(qǐng)求參數(shù)明確指定了新值時(shí)才修改默認(rèn)屬性值。
例如,下面的代碼片斷表示:如果存在numItems請(qǐng)求參數(shù)的話,把numberOfItems屬性的值設(shè)置為請(qǐng)求參數(shù)numItems的值;否則什么也不做。
<jsp:setProperty property="numberOfItems" param="numItems" />
如果同時(shí)省略value和param,其效果相當(dāng)于提供一個(gè)param且其值等于property的值。進(jìn)一步利用這種借助請(qǐng)求參數(shù)和屬性名字相同進(jìn)行自動(dòng)賦值的思想,你還可以在property(Bean屬性的名字)中指定“*”,然后省略value和param。此時(shí),服務(wù)器會(huì)查看所有的Bean屬性和請(qǐng)求參數(shù),如果兩者名字相同則自動(dòng)賦值。
﹤jsp:forward>標(biāo)記
將控制權(quán)傳輸至本地服務(wù)器上的另一地址
page 屬性-指定替代地址
可為靜態(tài)值,也可在請(qǐng)求時(shí)計(jì)算
語(yǔ)法:
﹤jsp: forward page = "localURL" />
<jsp:forward page=“/utils/errorReporter.jsp” />
<jsp:forward page="<%= someJavaExpression %>" />
﹤jsp:include>標(biāo)記
可將另一個(gè)頁(yè)面生成的內(nèi)容包括在當(dāng)前頁(yè)面的輸出結(jié)果中
也可包括Servlet
page 屬性-要插入當(dāng)前頁(yè)面的文檔
flush 屬性-是否刷新當(dāng)前頁(yè)面的緩沖器
﹤jsp:param> 標(biāo)記指定附加的 request 參數(shù)
﹤jsp:include page="localURL" flush="true" >
﹤jsp:param value="parameterValue1" />
﹤jsp:param value="parameterValueN" />
﹤jsp:include page="localURL" flush="true" />
include 指令和 include 動(dòng)作的區(qū)別
動(dòng)重新編譯和類(lèi)大小
靜態(tài)或動(dòng)態(tài)內(nèi)容的包括
合并主頁(yè)和包括的頁(yè)面的時(shí)間
共享局部變量
修改的生效
變量的作用域
include指令,它是在JSP文件被轉(zhuǎn)換成Servlet的時(shí)候引入文件,而這里的jsp:include動(dòng)作不同,插入文件的時(shí)間是在頁(yè)面被請(qǐng)求的時(shí)候!
【編輯推薦】
- 開(kāi)發(fā)高可移植性J2ME的軟件
- Java虛擬機(jī)(JVM)中的內(nèi)存設(shè)置詳解
- 20個(gè)開(kāi)發(fā)人員非常有用的Java功能代碼
- Web開(kāi)發(fā)誰(shuí)更高效 Java對(duì)決Ruby on Rails
- Google專(zhuān)家:JavaScript是網(wǎng)站性能的致命克星