版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.JSP標(biāo)準(zhǔn)標(biāo)簽庫介紹簡介 JSP標(biāo)準(zhǔn)模板庫(JSTL)是SUN公司發(fā)布的一個(gè)針對(duì)JSP開發(fā)的新組件。JSTL允許你使用標(biāo)簽(tags)來進(jìn)行JSP頁面開發(fā),而不是使用多數(shù)JSP程序員已經(jīng)習(xí)慣了的scriptlet代碼方式開發(fā)。JSTL幾乎能夠做到傳統(tǒng)JSP scriptlet代碼能做的任何事情。你可能會(huì)疑惑,為什么我們需要另一種這樣的HTML生成語言呢? STL允許JSP程序員使用tags而不是JAVA代碼來編程。為了展示為什么這個(gè)是更優(yōu)越的,下面將給出示例。我們會(huì)檢查一個(gè)非常簡單的從1數(shù)到10的JSP頁面。我們將通過兩種方法來檢查,一種是基于JSP的scriptlet,一種是JSTL。當(dāng)這
2、個(gè)計(jì)數(shù)器頁面的例子是用JSP scriptlet來編寫時(shí),JSP頁面如下所示: <html> <head> <title>Count to 10 in JSP scriptlet</title> </head> <body> <% for(int i=1;i<=10;i+) %> <%=i%><br/> <% %> </body> </html> 正如你在上例中看到的看到的那樣,使用scriptlet代碼產(chǎn)生的頁面源代碼會(huì)包含混合的HTML標(biāo)簽和
3、JAVA語句。這種混合型的編程方式不是最佳的方式,其主要原因有以下幾點(diǎn)。 主要的原因是它的可讀性。這個(gè)可讀性主要依賴于人類和計(jì)算機(jī)。JSTL可以允許程序員查看一個(gè)只包含完整HTML和類似HTML的標(biāo)簽的頁面。 SP scriptlet代碼的可讀性不適合人類。這種混合的scriptlet和HTML代碼對(duì)于計(jì)算機(jī)來說也很難讀。尤其是針對(duì)那些HTML官方工具如Dreamweaver和Microsoft FrontPage,所表現(xiàn)出來的不直觀性更突出。目前,大多數(shù)HTML官方工具會(huì)以不可編輯塊(non-editable blocks)的形式來隔離JSP scriptlet代碼。這種HTML官方工具通常
4、是不能直接修改JSP scriptlet代碼的。 下面這段代碼展示這個(gè)計(jì)數(shù)器范例如何使用JSTL方式來編寫。正如你所看到的,這個(gè)代碼列表有不變性,僅僅一個(gè)標(biāo)簽被使用。HTML和JSTL標(biāo)簽混合起來產(chǎn)生了這個(gè)程序。 <% taglib uri=" prefix="c" %> <html> <head> <title>Count to 10 Example (using JSTL)</title> </head> <body> <c:forEach var="i&quo
5、t; begin="1" end="10" step="1"> <c:out value="$i" /> <br /> </c:forEach> </body> </html> 當(dāng)你檢查上面這個(gè)例子的代碼時(shí),你會(huì)看到,JSP頁面只包含標(biāo)簽。上面的代碼使用諸如<head>和<br>這樣的HTML標(biāo)簽。這種標(biāo)簽用法不限制于HTML標(biāo)簽。這段代碼也可以使用諸如<c:forEach>和<c:out>這樣的JST
6、L標(biāo)簽。在本文中,將會(huì)介紹一些JSTL的基礎(chǔ)。 安裝JSTL 要使用JSTL,你必須安裝有一個(gè)JSP1.2(或者更高版本)的容器。最普通的JSP容器是Apache Tomcat。你能夠從/tomcat/這里下載到。獨(dú)立的Tomcat允許你使用常規(guī)的JSP scriptlet代碼。要使用JSTL,你必須在Tomcat中安裝JSTL。JSTL的主要URL是 要在Tomcat中安裝JSTL,有下面三個(gè)步驟: 拷貝JSTL JAR文件到Tomcat的lib目錄中. 如果你使用的是Windows, 那么lib目錄最可能的位置是C:Program Files
7、Apache Tomcat 4.0webappsROOTWEB-INFlib。你應(yīng)該拷貝這些JAR包到你的Tomcat JAR目錄。 拷貝JSTL TLD文件到Tomcat的web-inf目錄中 你檢查JSTL發(fā)布文件時(shí),你應(yīng)該會(huì)注意到有8個(gè)文件是以TLD擴(kuò)展名結(jié)尾的。所有這8個(gè)文件都應(yīng)該復(fù)制到你的web-inf目錄中。 修改web.xml文件包含這些TLD文件。 最后,你必須修改你的web.xml,添加8個(gè)標(biāo)簽庫的表項(xiàng)(entry)。需要添加的表項(xiàng)如下所示: <taglib> <taglib-uri> <taglib-location>/WEB-INF/f
8、mt.tld</taglib-location> </taglib> <taglib> <taglib-uri> <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location> </taglib> <taglib> <taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> <taglib> <tagli
9、b-uri> <taglib-location>/WEB-INF/c-rt.tld</taglib-location> </taglib> <taglib> <taglib-uri> <taglib-location>/WEB-INF/sql.tld</taglib-location> </taglib> <taglib> <taglib-uri> <taglib-location>/WEB-INF/sql-rt.tld</taglib-locatio
10、n> </taglib> <taglib> <taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> <taglib> <taglib-uri> <taglib-location>/WEB-INF/x-rt.tld</taglib-location> </taglib> 完成上面這三步后,你現(xiàn)在可以準(zhǔn)備測(cè)試你的JSTL安裝了??梢酝ㄟ^創(chuàng)建一個(gè)包含JSTL的JSP頁面來驗(yàn)證
11、。一個(gè)最簡單的范例程序就是上面的那個(gè)計(jì)數(shù)器程序。你應(yīng)該將它放置在你的Webroot目錄中(C:Program FilesApache Tomcat 5.0webappsROOT)。一旦Tomcat啟動(dòng)后,你應(yīng)該能夠通過瀏覽:8080/count.jsp來查看這個(gè)頁面。 如果你沒有正確安裝JSTL,那么可能不會(huì)出現(xiàn)錯(cuò)誤信息。如果JSTL不能解釋你的標(biāo)簽含義,那么它在Web瀏覽器上會(huì)直接跳過。然后Web瀏覽器將解釋這些未知的HTML標(biāo)簽。多數(shù)瀏覽器僅僅只是忽略這些未知的HTML標(biāo)簽。 JSTL標(biāo)簽庫 JSTL通常被認(rèn)為是一種單標(biāo)簽庫。但JSTL實(shí)際上有4個(gè)標(biāo)簽庫。這些
12、標(biāo)簽庫被概括為如下: 核心標(biāo)簽庫包含一些Web應(yīng)用的必要的標(biāo)簽。核心標(biāo)簽庫的實(shí)例包括循環(huán),表達(dá)式賦值和基本輸入輸出。. 格式化/國際化標(biāo)簽庫包括被用來解析數(shù)據(jù)的標(biāo)簽庫。這種標(biāo)簽會(huì)解析數(shù)據(jù),比如日期,不同的場(chǎng)所區(qū)域等。 數(shù)據(jù)庫標(biāo)簽庫包含被用來訪問SQL數(shù)據(jù)庫的標(biāo)簽。這些標(biāo)簽通常僅僅只創(chuàng)建原形(prototype)程序。這個(gè)是因?yàn)榇蠖鄶?shù)程序不會(huì)直接從JSP頁面中來處理數(shù)據(jù)庫訪問。數(shù)據(jù)庫訪問應(yīng)該被嵌入到能夠被JSP頁面所訪問的EJB中。 XML標(biāo)簽庫包含被用來訪問XML元素的標(biāo)簽。因?yàn)閄ML廣泛使用于Web開發(fā),XML的處理是JSTL的一個(gè)重要的特征。 在本文中,我們將僅僅只對(duì)核心標(biāo)簽做一個(gè)簡單介紹
13、。我們將考察一個(gè)簡單的范例,來說明如何處理用戶在表單中輸入的數(shù)據(jù)。在我們開始檢查程序之前,我們必須先看看JSTL是如何處理表達(dá)式的,JSTL的表達(dá)式處理是通過使用EL表達(dá)式語言來完成的,僅僅只能在JSP2.0被使用。下一節(jié),我們會(huì)考察EL表達(dá)式語言。 EL表達(dá)式語言 JSP2.0的一個(gè)主要的組件就是這個(gè)新的叫做EL的表達(dá)式語言。EL被廣泛用在JSTL中。然而,重要的是記住,EL是JSP的功能而不是JSTL的。被用在JSP2.0中JSP scriptlet代碼能夠包含EL表達(dá)式。下面這行代碼演示了JSP scriptlet代碼中的EL: <p> Your total, includi
14、ng shipping is $total+shipping </p> 正如你看到的,total和shipping相加后會(huì)產(chǎn)生HTML并且在瀏覽器中顯示它們的值。這些表達(dá)式也可以在JSTL標(biāo)簽中使用。JSTL1.0的一個(gè)重要問題是,JSTL不能用在JSP1.2的版本上。因?yàn)镴SP1.2不支持EL,所以有必要提供一些額外的JSTL標(biāo)簽來幫助EL的使用。例如,如果你想使用JSTL來顯示上面的表達(dá)式,你可以使用下面的代碼。 <p> Your total, including shipping is <c:out var="$total+shipping&quo
15、t;/> </p> 值得注意的是,JSTL不需要JSP2.0來運(yùn)行。通過提供一個(gè)能夠顯示EL表達(dá)式的標(biāo)簽,就可以達(dá)到這樣的需求。 JSTL范例 我們將考察一個(gè)簡單的使用JSTL的范例。在這個(gè)例子里,我們將考察Web應(yīng)用中的一個(gè)常見過程。我們會(huì)看到如何提交(POST)一個(gè)表單,并處理POST的結(jié)果。程序代碼如下: <% taglib uri=" prefix="c" %> <html> <head> <title>If with Body</title> </head> <
16、;body> <c:if test="$pageContext.request.method='POST'"> <c:if test="$param.guess='Java'">You guessed it! <br /> <br /> <br /> </c:if> <c:if test="$param.guess!='Java'">You are wrong <br /> <br
17、 /> <br /> </c:if> </c:if> <form method="post">Guess what computer language I am thinking of? <input type="text" name="guess" /> <input type="submit" value="Try!" /> <br/> </form> </body> </
18、html> 這個(gè)簡單的Web頁面顯示一個(gè)表單,要求用戶猜測(cè)程序所想的計(jì)算機(jī)語言。當(dāng)然,計(jì)算機(jī)想的是“Java”。這個(gè)頁面通過檢查“是否已提交”來開始。這使得表單和處理表單的代碼可以放在同一個(gè)頁面中。是通過下面的JSTL if語句實(shí)現(xiàn)的。 <c:if test="$pageContext.request.method='POST'"> 現(xiàn)在你看到了,<c:if>標(biāo)簽使用EL表達(dá)式來決定是否請(qǐng)求的方式是POST的。如果數(shù)據(jù)被post到頁面,那么用戶輸入的他們的猜想值就會(huì)存儲(chǔ)在名為“guest”的參數(shù)中。這是因?yàn)椤癵uest”是表單輸入項(xiàng)的名字。我們現(xiàn)在必須檢查是否這個(gè)參數(shù)等于“Java”。這個(gè)是通過下面的<c:if>標(biāo)簽來完成: <c:if test="$
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度車庫門自動(dòng)開閉系統(tǒng)維修合同3篇
- 英杰電氣:2024年半年度報(bào)告
- 2025年度石油鉆井平臺(tái)打眼鉆孔放炮合同4篇
- 二零二五年度斷橋鋁窗戶安裝與節(jié)能補(bǔ)貼申請(qǐng)合同3篇
- 2025年個(gè)人收入證明標(biāo)準(zhǔn)范本合同編制4篇
- 2025年度個(gè)人住房貸款延期還款及利率調(diào)整協(xié)議4篇
- 二零二五年度航空航天產(chǎn)業(yè)園廠房租賃及研發(fā)合同3篇
- 二零二五年度車庫車位租賃與停車場(chǎng)綠化美化合同4篇
- 玉溪云南玉溪易門縣教育體育系統(tǒng)面向2025年畢業(yè)生招聘教師6人筆試歷年參考題庫附帶答案詳解
- 玉溪2025年云南玉溪市江川區(qū)審計(jì)局招聘公益性崗位工作人員筆試歷年參考題庫附帶答案詳解
- 5G+教育5G技術(shù)在智慧校園教育專網(wǎng)系統(tǒng)的應(yīng)用
- 服務(wù)人員隊(duì)伍穩(wěn)定措施
- 大連理工大學(xué)信封紙
- VI設(shè)計(jì)輔助圖形設(shè)計(jì)
- 淺談小學(xué)勞動(dòng)教育的開展與探究 論文
- 2023年全國4月高等教育自學(xué)考試管理學(xué)原理00054試題及答案新編
- 河北省大學(xué)生調(diào)研河北社會(huì)調(diào)查活動(dòng)項(xiàng)目申請(qǐng)書
- JJG 921-2021環(huán)境振動(dòng)分析儀
- 中藥炮制學(xué)-第五、六章
- 小兒高熱驚厥精品課件
- 兩段焙燒除砷技術(shù)簡介 - 文字版(1)(2)課件
評(píng)論
0/150
提交評(píng)論