亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP標準標記庫促進了網頁的開發

2024-09-05 00:19:11
字體:
來源:轉載
供稿:網友
java server pages (jsp) 標準標記庫 (jstl)的版本的發布對于jsp/servlet開發者來說是一個重大的進展。有了一個表達語言(el)和一組四種強大的、易于學習的標準標記庫,jstl極有可能不久后成為實現動態的、基于java的站點的主要方法。

1996年對jsp servlet的介紹使得java成為動態網頁開發的合理的選擇。隨后出現的java服務器頁(jsp)是走向快速的、可維護的java網頁實現過程的合理進化的一步,緊接著就出現了jsp標記的支持。但是2002中期的jstl(jsp標準標記庫)的發布才是進一步加速和簡化開發過程最大的一步。

在本文中,我解釋了jstl的功能,也涵蓋了你啟動jstl所需的每件事情。假設你有了對java、jsp、xml和安裝一個web容器的基本理解。如果你對這些主題感到陌生,你可以在resources(http://www.javaworld.com/javaworld/jw-02-2003/jw-0228-jstl.html?#resources#resources)上瀏覽一下背景參考。在下面的闡述中,假定你有xml和sql的知識。

安裝jstl支持

對于我們的jstl安裝例子來說,我們使用tomcat 4.1(盡管任意支持servlet 2.3和jsp1.2說明的servlet容器都應該能工作)。首先,下載tomcat 4.1并且按指示進行安裝(注意:jstl需要一個jsp1.2 web容器)。

用tomcat4 start程序啟動tomcat,并且運行index.html頁來確保tomcat是激活的、且運行良好。

接下來,安裝jstl支持,你可以從jakarta站點下載jstl支持,(http://www.javaworld.com/javaworld/jw-02-2003/jw-0228-jstl.html?#resources#resources)并按照下面步驟:

1. 從jakarta站點下載jstl檢索、解壓/脫檔該文件。(http://www.javaworld.com/javaworld/jw-02-2003/jw-0228-jstl.html?#resources)

2. 復制你已經解壓為common/lib的jar文件到你的tomcat安裝路徑中(盡管我們的項目不需要所有的jar文件);這使得jstl文件適用于你的任意web應用。

3. 對于任意你想使用jstl的web應用來說,復制.tld文件到你的web應用的web-inf目錄下。

4. 對于你的jstl的web應用,編輯web.xml并添加下列輸入:

<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/web-inf/fmt.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/web-inf/c.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/web-inf/sql.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/web-inf/x.tld</taglib-location>
</taglib>

這些輸入讓你的web應用可使用jstl標記庫的表達語言(el)版本。這些輸入的位置有關系!如果你不肯定將他們輸入到何處,關于web.xml選項和順序的權威性指導在文檔類型定義(dtd)中定義過:http://java.sun.com/j2ee/dtds/web-app_2_2.dtd。

5. 當你創建了一個使用jstl的jsp頁時,將他輸入到你的web應用的主目錄下,就像其它jsp和html頁一樣。你可以為該頁任意取名,但是它必須有一個.jsp的擴展名。

基礎原理

首先,所有的jstl也是jsp頁,jstl只是jsp功能的一個超集。

同樣,所有的jstl標記是有效的xml。這意味著:如果你將jstl標記之外的內容當作臨時文本(通常是html)時,剩下的jstl標記必須當作合法的xml來解釋。這里有一些隱含的規則,它要求大部分xml語法都是正確的。

jstl提供一組四個標準標記庫(core核心、internationalization/format國際標準化/格式、xml和sql)并支持el。jstl和el的基本設計目的是簡化網頁開發和實現。

在本文中,我們遵循jstl說明書的命名規則,并且把jstl標記當作動作。一個jstl標記對應于某個動作;調用動作明確的提醒我們:他們添加動態行為到一個另外的靜態頁上。

jstl標記庫有兩個版本:一個用你以前使用的方法將jsp表達式插入,如<%= . . . %>,另一個使用一個jstl el.我會在后面進一步討論在jstl中的el支持。

el支持

要理解當前jstl對el支持的狀態,讓我們檢查相關的說明書是怎樣處理的。java說明書請求(jsr)專家組成員決定:由于某種原因,el規范說明應該是jsp說明書的一部份,而不是jstl說明書的一部分。el完整的說明書成為jsp2.0的一部分。因為jstl1.0在jsp1.3之前已經完成,jstl作者不得不對用于jstl1.0的el支持實現做一個合理的猜測(結果可能是相當好的)。一個jstl維護版本將與jsp1.3說明書保持一致,并為了使el適合jsp1.3說明書,jstl維護版本做了一些修正。

本文描述的el概要可能在即將發布的jstl版本中有一點改動,但是任何改動都是微小的。

el用于簡單的語法定義了一套功能強大的語言,它很容易學習。它融合著javascript語言和perl語言較好的部分的一些風格。el表達式,集成了來自四種標準標記庫的jstl標記,提供了一個巨大的、靈活的屬性集。

所有的el表達式都被${}括起來。jstl中的表達式總是jstl標記中的屬性值的一部分。表達式可以是屬性的一部分或者合并和嵌入到一個字符串直接量中。jstl屬性也可以包含簡單的字符串直接量。在接下來的jstl中,我們在一個來自核心庫的c:out動作中說明每種情況,這個核心庫將它的value屬性值送到jsp輸出上:

<c:out value="${anexpression}"/>
<c:out value="literaltext${anexpression}${anotherexpression}"/>
<c:out value="literaltext"/>

el也定義了一套規則用于強制表達式中的值轉換為上下文相對應的類型。我們在這里不詳細討論這些規則;然而,它的方法與用perl語言定義的方式非常相似(就像perl語言中的做法一樣,該方法理所當然的運行良好,但是,偶爾,也會出現可能不是你十分想要的那種結果,但你可以接受)。

el為訪問對象屬性、集合元素、一組隱藏對象以及使用相關的、邏輯的和算術的操作符提供了支持。對于索引的屬性來說,包括數組和java.util.list類在內,元素可用下列語法訪問:

${alist[4]}
${alist[somevariable]}

javabean屬性和java.util.map元素(它代表一系列名字/值對)都可以使用下列方法的一個訪問得到。在以下的開頭兩個表達式里,我們可以訪問到一個用javabean語言命名為aproperty的屬性或者用關鍵字aproperty訪問到一個map實體。在第三個表達式中(注意:我已經省略了引號),我們用保存在變量avariablecontainingpropertyname中的一個名字訪問了在anobject之內的一個元素:

${anobject.aproperty}
${anobject["apropertyname"]}
${anobject[avariablecontainingpropertyname]}

在el中定義了許多隱藏變量:

pagecontext:用于該網頁的pagecontext對象

pagescope, requestscope, sessionscope, 和 applicationscope:這些是映射這些范圍的每一個變量到值上的map集。

param 和 paramvalues:用頁訪問傳遞的參數,與在jsp中一樣

header 和 headervalues:用頁請求傳遞的頭,與在jsp中一樣

cookie:map映射cookie程序到特定的cookie對象上

el定義了全套與你在java中非常熟悉的那些完全對應的操作符。算法操作符包括+、 -、 *、 / (或 div)、 和% (或 mod)。相關的操作符包括==、!=、<、>、<=、>=,它分別對應于eq、ne、lt、gt、le、和ge。我不想詳細闡述這些操作符,因為他們都能自我說明。

jstl標記庫

至此,我已經解釋了一些基本原理并且涵蓋了el語法。我要專門討論四種jstl標記庫。我主要討論核心庫,因為它是你一定要使用的;但是,我也會詳細的討論其余幾個,以便你能啟動它。

首先,盡管我應該更多地談論jstl標記庫的兩種風格,我上面提到的每個jstl標記庫以兩個版本出現:一個支持使用el的表達式;另一個支持標準jsp表達式。當你引入任何標記庫到一個jsp頁時,你要定義一個前綴,該前綴指定了與庫中標記相對應的命名空間。

四種標準標記庫,和他們的jstl規范定義的前綴常規,列表如下。記?。耗憧梢远x自己的前綴,但是這絕對沒有什么好處。

四種標準標記庫


el 庫前綴
請求時間 (rt) 庫前綴

核心
c
c_rt

國際標準化/格式
fmt
fmt_rt

sql/db 支持
sql
sql_rt

xml
x
x_rt


為了使用頁中的核心標記庫( 實際上,你使你的頁對標記庫的命名空間可見),在你的頁首包含下列例子中的指令:

<%@ taglib prefix="c" uri=http://java.sun.com/jstl/core %>

為了使用該標記庫的標記,用你在你的包含語句中設計好的前綴,在你的頁中給每個標記加上前綴:

<c:out value="${anexpression}"/>

核心數據庫

讓我們更詳細的測試核心數據庫,先看看他最通用的功能。



顯示/設定值和異常處理



核心庫的最基本的標記是c:out標記,它在頁中顯示一個el表達式的值。一個使用c:out的表達式通常是這樣:

we have <c:out value="${applicationscope.product.inventorycount}" escapexml="true" default="0" /> of those items in stock.

上例中,value屬性是我們送到頁輸出的表達式。我也說明了選項escapexml的屬性和默認屬性。escapexml的屬性指定了xml字符(<、>、 &、 和 .)是否應該轉化為相應的字符實體代碼(這樣他們可以讓這些字符出現在一個html頁中);默認屬性用于el不能估算出數值或者數值計算出來為空的情況。

注意:當el支持完全貫穿整個jsp2.0的時候,你不需要使用c:out動作;你可以僅嵌套jsp表達式直接在頁中。

另一個普遍使用的核心動作是c:set,它在頁中設定一個變量。你可以用兩種方法使用c:set動作,第一種方法設定在var屬性中定義的變量到在value屬性中定義的值上,方法如下:

<c:set var="customerid" value="$param:customernumber" scope="session" />

上述的選擇項scope屬性指定了我們要在會話期范圍內設定變量customerid;如果范圍沒有制定,范圍默認為頁。

c:set另一個強大的用途就是將c:set標記的體的內容賦給一個指定的變量:

<c:set var="cellcontents">
<td>
<c:out value="${mycell}"/>
</td>
</c:set>

在上例中,c:set動作定義了名為cellcontents(在頁的范圍內)的變量,該變量擁有在標記的體中定義的內容。在這種情況下,體定義了一個html表格單元格元素,計算體中的c:out動作,并且該計算的結果包括在體中的字符串直接量值。

就像你預想的那樣,jstl進行異常處理有點早。在典型的jsp頁中,你有兩種異常處理的方法:試圖/捕捉直接嵌入到頁中的小腳本代碼中的塊;或者用一個jsp errorpage指令。jsp errorpage指令提供一個良好的捕捉所有異常的方法來處理頁中任何可能的異常。jstl用一個c:catch動作提供一個好的可選擇的方式。這個c:catch動作提供一個更細粒度的有效方法來處理異常。而且沒有嵌入java代碼到頁中。一個c:catch動作是這樣的:

<c:catch>
<!--. . . some set of nested jstl tags below which would be hit on an exception-->
</c:catch>

c:catch動作有一個可選的屬性,即一個指向拋出異常的變量。

你可能不怎么愿意使用c:remove標記。這個標記有用于變量名和范圍的屬性,并且可從指定的范圍內刪除指定的變量。


流程控制

讓我們轉為討論jstl的流程控制和條件標記。如果你已經用任何一種語言使用了條件和流程控制語句,理論上這里沒什么新鮮的東西。

c:if動作處理簡單條件語句的測試。計算測試屬性中的boolean表達式的值,如果表達式為真的話,計算體的內容。在下面的動作中,我們也說明了備選項var屬性。為了以后的使用,var屬性保存測試結果在頁(如果沒有指定其他scope屬性的話)中。

<c:if test="${status.totalvisits == 1000000}" var="visits">
you are the millionth visitor to our site! congratulations!
</c:if>



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线视频a| 日韩精品视频在线观看网址| 91av福利视频| 亚洲xxxx视频| 亚洲精品wwww| 日本久久久久亚洲中字幕| 77777亚洲午夜久久多人| 亚洲2020天天堂在线观看| 国产精品视频精品| 色悠悠久久久久| 国产精品69久久久久| 亚洲色图在线观看| 九九热99久久久国产盗摄| 久久艹在线视频| 中文字幕精品一区二区精品| 久久精品成人欧美大片| 日韩高清免费在线| 久久免费视频网站| 欧美视频13p| 亚洲老板91色精品久久| 亚洲午夜精品久久久久久久久久久久| 亚洲影院色在线观看免费| 国产精品一区二区性色av| 亚洲激情视频网| 久久国产精品久久久| 午夜精品一区二区三区在线视| 久久精品色欧美aⅴ一区二区| 欧美日韩另类字幕中文| 奇米4444一区二区三区| 欧美亚洲第一区| 欧美日韩中文字幕| 国产成一区二区| 亚洲在线免费视频| 欧美午夜美女看片| 中文字幕无线精品亚洲乱码一区| 久久精品成人欧美大片古装| 97色在线观看免费视频| 蜜臀久久99精品久久久久久宅男| 久久中文字幕在线视频| 欧美精品激情视频| 成人免费视频xnxx.com| 美女啪啪无遮挡免费久久网站| 两个人的视频www国产精品| 日韩专区中文字幕| 国产精品丝袜久久久久久不卡| 欧美精品18videos性欧| 最新国产精品拍自在线播放| 日本中文字幕久久看| 国产在线观看一区二区三区| 青草青草久热精品视频在线网站| 国产精品久久久久久久久久| 日本一区二三区好的精华液| 国模视频一区二区三区| 欧美亚洲国产精品| 日韩av手机在线| 午夜精品一区二区三区视频免费看| 久久精品国产免费观看| 日韩在线视频线视频免费网站| 欧美激情第6页| 7m第一福利500精品视频| …久久精品99久久香蕉国产| 久久久久久久久爱| 一区二区国产精品视频| 国产精品专区h在线观看| 亚洲一区二区自拍| 久久精品国产99国产精品澳门| 欧美性69xxxx肥| 最好看的2019的中文字幕视频| 成人一区二区电影| 日韩激情在线视频| 夜夜嗨av一区二区三区免费区| 日韩中文字幕精品| 一本色道久久88综合日韩精品| 国产亚洲欧美一区| 亚洲精品天天看| 精品久久中文字幕| 91久久精品国产91性色| 91色精品视频在线| 欧美孕妇毛茸茸xxxx| 欧美成人在线影院| 欧美一级淫片丝袜脚交| 欧美亚洲视频在线看网址| 亚洲一区二区久久| 4k岛国日韩精品**专区| 国产亚洲免费的视频看| 91九色在线视频| 欧美激情一区二区三级高清视频| 日韩中文字幕久久| 久久久免费在线观看| 日韩美女中文字幕| 成人欧美一区二区三区在线湿哒哒| 亚洲免费一在线| 国产精品免费看久久久香蕉| 午夜精品久久久99热福利| 亚洲一区二区三区视频| 91精品国产色综合久久不卡98口| 久久九九精品99国产精品| 国产亚洲一区二区精品| 亚洲偷熟乱区亚洲香蕉av| 久久资源免费视频| 亚洲免费伊人电影在线观看av| 一区二区三区视频观看| 国产欧美精品日韩| 成人国产精品一区| 国产成人综合av| 久久久女女女女999久久| 成人午夜一级二级三级| 5278欧美一区二区三区| 欧美午夜女人视频在线| 欧美伊久线香蕉线新在线| 亚洲国产日韩欧美在线动漫| 欧美极度另类性三渗透| 欧美一级大胆视频| 亚洲美女av黄| 韩国19禁主播vip福利视频| 日韩欧美国产中文字幕| 成人免费高清完整版在线观看| 亚洲毛片在线看| 色妞色视频一区二区三区四区| 中文国产成人精品| 成人黄色av免费在线观看| 久久国产精品电影| 亚洲自拍欧美色图| 色偷偷综合社区| 91久久国产综合久久91精品网站| 国产视频亚洲精品| 日韩欧美在线一区| 91精品国产综合久久香蕉| 日韩av电影手机在线观看| 国产成人久久久精品一区| 久久99国产精品久久久久久久久| 国产精品美女呻吟| 亚洲色图13p| 欧洲亚洲免费在线| 亚洲网址你懂得| 久久久www成人免费精品张筱雨| 日韩欧美在线视频观看| 久国内精品在线| 久久久久久18| 日韩福利视频在线观看| 亚洲天堂第二页| 欧美在线一级va免费观看| 亚洲精品久久久久久久久| 精品久久久久久亚洲精品| 91沈先生作品| 亚洲欧美在线一区| 国产精品18久久久久久首页狼| 91视频国产一区| 成人免费大片黄在线播放| 国产成人精品视| 人人澡人人澡人人看欧美| 亚洲色图综合久久| 国模视频一区二区三区| 日韩av在线免费观看一区| 在线观看亚洲区| 日韩免费av一区二区| 欧美激情在线视频二区| 国产精品夫妻激情| 欧美丰满少妇xxxx| 精品国产一区二区三区久久久| 亚洲精品wwww| 丰满岳妇乱一区二区三区| 色先锋久久影院av| www.欧美精品一二三区|