版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
<JSP程序設(shè)計>(第2版)第3章
配合<JSP程序設(shè)計(第2版)代碼>一起使用Powerpoint制作:耿祥義張躍平普通高等教育“十一五”國家級規(guī)劃教材Tag文件與Tag標(biāo)記主要內(nèi)容Tag文件的結(jié)構(gòu)Tag文件的存儲目錄Tag標(biāo)記Tag文件中的常用指令Tag標(biāo)記的嵌套難點掌握Tag文件中的attribute指令掌握Tag文件中的variable指令關(guān)鍵實踐使用標(biāo)記體使用attribute指令和variable指令第3章導(dǎo)讀2§3.1Tag文件的結(jié)構(gòu)
Tag文件是一種特殊的文本文件。Tag文件和JSP文件很類似,可以被JSP頁面動態(tài)加載調(diào)用,但是用戶不能通過該Tag文件所在Web服務(wù)目錄直接訪問這個Tag文件。Tag文件是擴(kuò)展名為.tag的文本文件,其結(jié)構(gòu)幾乎和JSP文件相同。一個Tag文件中可以有普通的HTML標(biāo)記符、某些特殊的指令標(biāo)記(見3.3)、成員變量和方法的聲明、Java程序片和Java表達(dá)式。
參考AddSum.tag,EvenSum.tag3AddSum.tag,EvenSum.tagOddSum.tag<P>這是一個Tab文件,負(fù)責(zé)計算1~100內(nèi)的奇數(shù)之和:<%intsum=0,i=1;for(i=1;i<=100;i++){if(i%2==1)sum=sum+i;}out.println(sum);%>EvenSum.tag<P>這是一個Tab文件,負(fù)責(zé)計算1~100內(nèi)的偶數(shù)之和:<%intsum=0,i=1;for(i=1;i<=100;i++){if(i%2==0)sum=sum+i;}out.println(sum);%>4§3.2Tag文件的存儲目錄
如果某個Web服務(wù)目錄下的JSP頁面準(zhǔn)備調(diào)用一個Tag文件,那么我們必須在該Web服務(wù)目錄下,建立如下的目錄結(jié)構(gòu):
Web服務(wù)目錄\WEB-INF\tags
比如:
ch3\WEB-INF\tags其中的WEB-INF和tags都是固定的目錄名稱,而tags下的子目錄的名稱可由用戶給定。5§3.3Tag標(biāo)記3.3.1Tag標(biāo)記與Tag文件當(dāng)我們編寫了一個Tag文件并保存到特定目錄中后,也就自定義出了一個標(biāo)記,該標(biāo)記的格式為:
<Tag文件名字/>或
<Tag文件名字>標(biāo)記體</Tag文件名字>
一個Tag文件對應(yīng)著一個標(biāo)記,該標(biāo)記被習(xí)慣地稱為Tag標(biāo)記,將存放在同一目錄中的若干個Tag文件所對應(yīng)的Tag標(biāo)記的全體稱之為一個自定義標(biāo)記庫或簡稱為標(biāo)記庫。63.3.2Tag標(biāo)記的使用
一個JSP頁面通過使用Tag標(biāo)記來調(diào)用一個Tag文件。分為兩步:
1.使用<taglib>指令標(biāo)記引入該Web服務(wù)目錄下的標(biāo)記庫。<taglib>指令的格式如下:
<%@taglibtagdir="自定義標(biāo)記庫的位置"prefix="前綴">一個JSP頁面可以使用幾個<taglib>指令標(biāo)記引入若干個標(biāo)記庫,例如:
<%@taglibtagdir="/WEB-INF/tags"prefix="beijing"%><%@taglibtagdir="/WEB-INF/tags/geng"prefix="dalian"%>
2.JSP頁面使用帶前綴的Tag標(biāo)記調(diào)用相應(yīng)的Tag文件,其中的前綴由<taglib>指令中的prefix屬性指定。例如:
<beijing:OddSum/><dalian:EvenSum/>例3-17例1
例子1中的JSP頁面保存在Web服務(wù)目錄ch3中,該JSP頁面所調(diào)用的Tag文件是3.1節(jié)中提到的OddSum.tag和EvenSum.tag。example3_1.jsp的效果如圖3.1。
<%@pagecontentType="text/html;Charset=GB2312"%><%@taglibtagdir="/WEB-INF/tags"prefix="beijing"%><%@taglibtagdir="/WEB-INF/tags/geng"prefix="dalian"%><html><bodybgcolor=cyan><h3>以下是調(diào)用Tag文件的效果:</h3><beijing:OddSum/><h3>以下是調(diào)用Tag文件的效果:</h3><dalian:EvenSum/></body></html>83.3.3Tag標(biāo)記的標(biāo)記體標(biāo)記的格式為:
<Tag文件名字/>或
<Tag文件名字>標(biāo)記體</Tag文件名字>當(dāng)JSP頁面調(diào)用一個Tag文件時可能希望動態(tài)地向該Tag文件傳遞信息,那么就可以使用帶有標(biāo)記體的Tag標(biāo)記來執(zhí)行一個Tag文件,Tag標(biāo)記中的“標(biāo)記體”就會傳遞給相應(yīng)的Tag文件,這個Tag文件通過使用
<jsp:doBody/>標(biāo)記處理JSP頁面?zhèn)鬟f過來的“標(biāo)記體”。詳細(xì)討論見3.4節(jié)。例3-29例2
例子2中,example3_2.jsp頁面調(diào)用Show.tag文件,而且通過標(biāo)記體向Show.tag文件傳遞文本數(shù)據(jù)。Show.tag文件使用<jsp:doBody/>處理example3_2.jsp頁面?zhèn)鬟f過來的文本數(shù)據(jù),將該文本數(shù)據(jù)循環(huán)顯示3次并逐次增大文本字體的字號。Show.tag保存在ch3\WEB-INF\tags目錄中,example3_2.jsp的效果如圖3.2。
10§3.4Tag文件中的常用指令
3.4.1Tag指令
Tag文件中的tag指令類似于JSP文件中的page指令。Tag文件通過使用tag指令可以指定某些屬性的值,以便從總體上影響Tag文件的處理和表示。tag指令的語法如下:
<%@tag屬性1="屬性值"屬性2="屬性值"…屬性n="屬性值"%>在一個Tag文件中可以使用多個tag指令,因此我們經(jīng)常使用多個tag指令為屬性指定需要的值:
<%@tag屬性1="屬性值"%><%@tag屬性2="屬性值"%>……<%@tag屬性n="屬性值"%>tag指令可以操作的屬性有:body-content、language、import、pageEncoding。113.4.1Tag指令_body-content屬性
body-content屬性的值可以確定JSP頁面使用Tag標(biāo)記時是否可以有標(biāo)記體,如果允許有標(biāo)記體,該屬性會給出標(biāo)記體內(nèi)容的類型。body-content屬性值有:empty、tagdependent、scriptless,默認(rèn)值是scriptless。
屬性的值是empty,JSP頁面必須使用沒有標(biāo)記體的Tag標(biāo)記:<Tag文件名字/>來調(diào)用相應(yīng)的Tag文件。
屬性的值是tagdependent或scriptless,JSP頁面使用無標(biāo)記體或有標(biāo)記體的Tag標(biāo)記:<Tag文件名字>標(biāo)記體</Tag文件名字>來調(diào)用相應(yīng)的Tag文件。
注:屬性值是scriptless,那么標(biāo)記體中不能有Java程序片;屬性值是tagdependent,那么Tag文件將標(biāo)記體的內(nèi)容按純文本處理。
123.4.1Tag指令_language屬性
language屬性的值指定Tag文件使用的腳本語言,目前只能取值java,其默認(rèn)值就是java。133.4.1Tag指令_import屬性
import屬性的作用是為Tag文件引入Java核心包中的類,這樣就可以在Tag文件的程序片部分、變量及方法聲明部分、表達(dá)式部分使用Java核心包中的類。import屬性可以取多個值。
import屬性已經(jīng)有如下值:
"java.lang.*"、"javax.servlet.*"、"javax.servlet.jsp.*"、"javax.servlet.http.*"。
143.4.1Tag指令_pageEncoding屬性該屬性指定Tag文件的字符編碼,其默認(rèn)值是ISO-8859-1。153.4.2include指令
在Tag文件中也有和JSP文件類似的include指令標(biāo)記,其使用方法和作用與JSP文件中的include指令標(biāo)記類似。include指令標(biāo)記的作用是在Tag文件中出現(xiàn)該指令的位置處,靜態(tài)插入一個文件。其語法格式如下:
<%@includefile="文件的URL"%>
163.4.3attribute指令
在Tag文件中通過使用attribute指令,可以讓使用它的JSP頁面向該Tag文件傳遞需要的數(shù)據(jù)。attribute指令的格式如下:<%@attributename="對象名字"required="true"|"false"type="對象的類型"%>注:attribute指令中的name屬性是必需的。比如,一個Tag文件MyTag.tag中有如下的attribute指令:
<%@attributename="length"required="true"%>那么JSP頁面就可以如下使用Tag標(biāo)記(假設(shè)標(biāo)記的前綴為computer)調(diào)用MyTag.tag:
<computer:MyTaglength="1000"/>或
<computer:MyTaglength="1000">我向Tag文件中傳遞的值是1000<computer:MyTag/>例3-3,3-417例3
例子3中,Triangle.tag存放在ch3\WEB-INF\tags目錄中,該Tag文件負(fù)責(zé)計算、顯示三角形的面積。example3_3.jsp使用Tag標(biāo)記調(diào)用Triangle.tag文件,并且向Triangle.tag文件傳遞三角形三邊的長度。example3_3.jsp的效果如圖3.3。
18例4
例子4中,JSP頁面只負(fù)責(zé)將學(xué)生的姓名和成績分別存放到鏈表(java.util.LinkedLst類型對象)中,然后將鏈表傳遞給Sort.tag,Sort.tag負(fù)責(zé)按從低到高顯示學(xué)生的成績。example3_4.jsp的效果如圖3.4。
193.4.4variable指令
Tag文件通過使用variable指令可以將Tag文件中的對象返回給調(diào)用該Tag文件的JSP頁面。(1)variable指令的格式<%@variablename-given=“對象名字”variable-class=“對象的類型”scope=“有效范圍”%>
例:<%@variablename-given="time"variable-class="java.util.Date"scope="AT_END"%>
該variable指令給出的對象的名字是time、類型為java.util.Date、有效范圍是AT_END。
(2)對象的返回jspContext調(diào)用setAttribute(“對象的名字”,對象的引用)方法存儲對象的名字以及該對象的引用。比如:jspContext.setAttribute("time",newDate());將名字是time的Date對象存儲到j(luò)spContext中。以下的variable指令:<%@variablename-given="time"variable-class="java.util.Date"scope="AT_END"%>為JSP頁面返回名字是time的Date對象。例3-520例5
例子5中,Tag文件GiveRoot.tag負(fù)責(zé)求出一元二次方程的根。JSP頁面在調(diào)用Tag文件時,使用attribute指令將方程的系數(shù)傳遞給Tag文件;Tag文件GiveRoot.tag使用variable指令返回一元二次方程的根給調(diào)用該Tag文件的JSP頁面。例子5中的useOne.jsp和useTwo.jsp都使用Tag標(biāo)記調(diào)用GiveRoot.tag,二者都可以得到GiveRoot.tag返回的方程的兩個根,但是二者使用不同的方式來處理和顯示方程的兩個根。userOne.jsp將方程的根保留最多3位小數(shù),并計算方程的兩個根之和,userTwo.jsp將方程的根保留最多5位小數(shù),并計算方程的兩個根之積。userOne.jsp和userTwo.jsp的效果分別如圖3.5(1)和3.5(2)
。
213.4.5taglib指令一個Tag文件可以使用Tag標(biāo)記來調(diào)用其它的Tag文件。
Tag文件必須使用<taglib>指令引入該Web服務(wù)目錄下的標(biāo)記庫,才可以使用Tag標(biāo)記來調(diào)用相應(yīng)的Tag文件。<taglib>指令的格式如下:
<%@taglibtagdir="自定義標(biāo)記庫的位置"prefix="前綴">一個Tag文件也可以使用幾個<taglib>指令標(biāo)記引入若干個標(biāo)記庫,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版家用空調(diào)銷售安裝與綠色環(huán)保認(rèn)證合同3篇
- 2025年度海洋工程建設(shè)項目施工合同管理細(xì)則3篇
- 2024年電子商務(wù)平臺數(shù)據(jù)采集合作協(xié)議3篇
- 2025至2030年中國自行式鋁合金升降機(jī)行業(yè)投資前景及策略咨詢研究報告
- 經(jīng)濟(jì)金融系統(tǒng)課程設(shè)計
- 2025至2030年中國電器鎖鎖芯行業(yè)投資前景及策略咨詢研究報告
- 懸疑小說的課程設(shè)計原則
- 2025版礦山勘探施工資源回收與綜合利用合同3篇
- 2025至2030年中國摩托車油箱油漆烘干線行業(yè)投資前景及策略咨詢研究報告
- 素描基本系統(tǒng)課程設(shè)計
- 2024年時事政治試題【有答案】
- 全套教學(xué)課件《工程倫理學(xué)》
- 人音版六年級上冊全冊音樂教案(新教材)
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識
- 機(jī)械原理課程設(shè)計鎖梁自動成型機(jī)床切削機(jī)構(gòu)
- MT 285-1992縫管錨桿
- 四川省煤礦探放水基準(zhǔn)線“兩把鎖”管理規(guī)定
- CRAC無線電技術(shù)觀摩交流大會業(yè)余無線電應(yīng)急通信演練基本規(guī)則
- 消防安全重點單位檔案(參考)
- 35KV降壓變電所一次系統(tǒng)電氣設(shè)計(可編輯)
- TL494組成的200W逆變器電路圖
評論
0/150
提交評論