基礎(chǔ)圖文說明教程:JSP規(guī)范模板庫(kù)(下)
發(fā)表時(shí)間:2024-01-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]JSTL標(biāo)簽庫(kù)JSTL通常被認(rèn)為是一種單標(biāo)簽庫(kù)。但JSTL實(shí)際上有4個(gè)標(biāo)簽庫(kù)。這些標(biāo)簽庫(kù)被概括為如下:核心標(biāo)簽庫(kù)—包含一些Web應(yīng)用的必要的標(biāo)簽。核心標(biāo)簽庫(kù)的實(shí)例包括循環(huán),表達(dá)式賦值和基本輸入輸出。.格式化/國(guó)際化標(biāo)簽庫(kù)—包括被用來解析數(shù)據(jù)的標(biāo)簽庫(kù)。這種標(biāo)簽會(huì)解析數(shù)據(jù),比如日期,不同的場(chǎng)所區(qū)域等。...
JSTL標(biāo)簽庫(kù)
JSTL通常被認(rèn)為是一種單標(biāo)簽庫(kù)。但JSTL實(shí)際上有4個(gè)標(biāo)簽庫(kù)。這些標(biāo)簽庫(kù)被概括為如下:
核心標(biāo)簽庫(kù)—包含一些Web應(yīng)用的必要的標(biāo)簽。核心標(biāo)簽庫(kù)的實(shí)例包括循環(huán),表達(dá)式賦值和基本輸入輸出。.
格式化/國(guó)際化標(biāo)簽庫(kù)—包括被用來解析數(shù)據(jù)的標(biāo)簽庫(kù)。這種標(biāo)簽會(huì)解析數(shù)據(jù),比如日期,不同的場(chǎng)所區(qū)域等。
數(shù)據(jù)庫(kù)標(biāo)簽庫(kù)—包含被用來訪問SQL數(shù)據(jù)庫(kù)的標(biāo)簽。這些標(biāo)簽通常僅僅只創(chuàng)建原形(prototype)程序。這個(gè)是因?yàn)榇蠖鄶?shù)程序不會(huì)直接從JSP頁(yè)面中來處理數(shù)據(jù)庫(kù)訪問。數(shù)據(jù)庫(kù)訪問應(yīng)該被嵌入到能夠被JSP頁(yè)面所訪問的EJB中。
XML標(biāo)簽庫(kù)—包含被用來訪問XML元素的標(biāo)簽。因?yàn)閄ML廣泛使用于Web開發(fā),XML的處理是JSTL的一個(gè)重要的特征。
在本文中,我們將僅僅只對(duì)核心標(biāo)簽做一個(gè)簡(jiǎn)單介紹。我們將考察一個(gè)簡(jiǎn)單的范例,來說明如何處理用戶在表單中輸入的數(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, including 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"/>
</p>
值得注意的是,JSTL不需要JSP2.0來運(yùn)行。通過提供一個(gè)能夠顯示EL表達(dá)式的標(biāo)簽,就可以達(dá)到這樣的需求。
JSTL范例
我們將考察一個(gè)簡(jiǎn)單的使用JSTL的范例。在這個(gè)例子里,我們將考察Web應(yīng)用中的一個(gè)常見過程。我們會(huì)看到如何提交(POST)一個(gè)表單,并處理POST的結(jié)果。程序代碼如下:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
<head>
<title>If with Body</title>
</head>
<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 />
<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>
</html>
這個(gè)簡(jiǎn)單的Web頁(yè)面顯示一個(gè)表單,要求用戶猜測(cè)程序所想的計(jì)算機(jī)語言。當(dāng)然,計(jì)算機(jī)想的是“Java”。這個(gè)頁(yè)面通過檢查“是否已提交”來開始。這使得表單和處理表單的代碼可以放在同一個(gè)頁(yè)面中。是通過下面的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到頁(yè)面,那么用戶輸入的他們的猜想值就會(huì)存儲(chǔ)在名為“guest”的參數(shù)中。這是因?yàn)椤癵uest”是表單輸入項(xiàng)的名字。我們現(xiàn)在必須檢查是否這個(gè)參數(shù)等于“Java”。這個(gè)是通過下面的<c:if>標(biāo)簽來完成:
<c:if test="${param.guess=='Java'}">
You guessed it!
</c:if>
正如你所看到的,如果表達(dá)式為true,<c:if>標(biāo)簽的標(biāo)簽體就被執(zhí)行。在本文中,我們開始考察了JSTL如何被安裝,以及它是如何運(yùn)轉(zhuǎn)的,也提供了一些JSTL小范例幫助大家理解。
JSTL的核心標(biāo)簽也包含循環(huán),疊代器和變量處理。通過使用標(biāo)簽,你能在collections里進(jìn)行iterate,訪問用戶的會(huì)話數(shù)據(jù)(session data),執(zhí)行其他的核心任務(wù)等。除了核心標(biāo)簽庫(kù),XML,數(shù)據(jù)庫(kù)和格式化標(biāo)簽庫(kù)也提供了更多高級(jí)的用處。
(End)
注:EL Expression Language這里翻譯成EL表達(dá)式語言,有的是翻譯成EL表達(dá)語言,是一個(gè)意思。
Translated by Caiyi0903(Willpower),2004.2.19