1. 程式人生 > >jstl in action 第二章(轉自http://www.blogcn.com/blog/trackback.asp?mydiary=23140875)

jstl in action 第二章(轉自http://www.blogcn.com/blog/trackback.asp?mydiary=23140875)

第二章:xml、jsp基礎

本章內容:
I.xml基本語法
II.jsp介紹
III.context中的jstl標籤庫
IV.jsp範圍變數

2-1xml介紹

首 先要提一下html。html擁有一套標籤,如<img>,標籤擁有修飾符或成為屬性(attribute)。如在<img>標 籤中的src="/dir/a.jpg"。html標籤擁有一定的結構,如不能出現在之前。因此,我們可以說,html是一個標籤、標籤屬性和結構規則的 集合。

html是xml的一個特定應用,不過它的規則比xml要寬泛,同樣,xml也不像html那樣描述特定的一套標籤或標籤間的關係。它描述的是文件中定義標籤的規則。

2-1-1標籤術語學

        |--start tag------<c:froEach bein="2" end="5" var="i">
        |
element |--body(content)--Current:<c:out value="${i}"/><br/>
        |
        |--end tag--------</c:forEach>

任何一個元素包括起始標籤、內容和結束標籤。有時,xml使用者會混淆元素和標籤的概念,請記住,標籤是在字元<>之間的文字。

空元素
起始和結束標籤間沒有內容的元素可以表示為
<lonely></lonely>
<lonely/>

屬性

起始標籤、空元素標籤可以有屬性,但請注意:結束標籤不可有屬性,一個標籤內的屬性不能重複。如:
<name firstName="true">Alex</name>正確
<name>Alex</name firstName="true">錯誤
<name firstName="true" firstName="true"/>錯誤

現在分析一下如下標籤:

<c:forEach items="${collection}">

c名稱空間字首
forEach標籤名
items屬性名
${collection}屬性值

名稱空間

名 目空間是xml擁有而html不具備的特色。我們可以把xml名稱空間視作組織標籤的一種方式。在html中,所有的標籤擁有簡單直接的名字,例如 table。在xml中則有名稱空間的限制。也就是說,標籤不再是簡單的名字,而是加上了名稱空間的字首。格式是<prefixName: tagName>

你可以通過名稱空間的形式去限制單一文件中不同地方的大量標籤。例如:

<賓館:洗衣機>和<家庭:洗衣機>

不同的名稱空間將上述標籤區別開來,而在絕大部分場合,通過attribute來實現兩者的區別是沒有效率的。

在使用jstl中,我們不需要懂得很多關於名稱空間的只是。然而,所有的jstl標籤都使用了名稱空間字首。例如c:forEach,c指向一個名稱空間而forEach聲明瞭一個擁有該名稱空間的特定標籤。

元素間的關係

一個元素可以包含另一個元素。外部元素為父,內部元素為子。通常我們成為父標籤和子標籤,而不是父元素和子元素。

一個子元素不能擁有多個父元素而一個父元素可以有多個子元素。在下面的例子中:<a>是<c>的祖先,<c>是<a>的子孫。

<a>
<b>
<c/>
</b>
</a>


2-1-2相關xml法則

在此我們將討論xml語法規則中jstl需要用到的部分。
意識到html規則比xml規則鬆散是很重要的。下表比較了html和xhtml的區別

法則:

I.屬性值不惜標註引號
html <p align=left>
xhtml <p align="left">

II.區分大小寫
html <p ALIGN=left>
xhtml <p align="left">

III.起始標籤必須結束
html <p>content
xhtml <p>content</p>

IV.空元素必須有結束標記
html <br>
xhtml <br/>

html有相對隨意的書寫方式,在你使用jstl生成html文件的時候,你仍然可以這樣做,<p ALIGN=left>不會產生任何問題,但是,不要把這種習慣帶入jstl語句中。


圍繞屬性值的引號可以是單引號也可以是雙引號。在下面的情況中,兩者混合使用:值為12",則<ruler length='12"'>

如果屬性值包含'和"兩者,那麼,可以使用轉義符號
'對應&apos;
"對應&quot;
我們不需要記住很多的細節,下列的對應列表就足夠了:
<  &lt;
& &amp;
> &gt;

還需要注意的一點是:標籤不能交叉。如下是錯誤的:
<a>
<b>
</a>
</b>

2-2jsp介紹

筆者注:此處的翻譯從略,僅做一個瀏覽,列出跟jstl關係較大的索引,具體jsp內容請參考網上眾多資料,在此不再贅述。

2-2-1jsp tags集合

jsp tags
|
|__standard tags(core jsp tags)
|
|__other tags(tag libraries)
     |
     |__(include)_jstl tags


2-2-2 standard tags

I.jsp tags能夠存在於hmtl tag或jsp tags中。如:

<a href="<c:out value="#">">a link</a>

II.jsp tags於靜態模板文字工作方式不同。jsp tag和html tag的最大區別在於它有名稱空間字首。

core jsp tags均有jsp的名稱空間字首,例如<jsp:forward>和<jsp:include>,由於core jsp tags出現時間比jstl要早幾年,所以形成了上表所描述的稍微令人困惑的集合形式。


IV.<jsp:include page="test.jsp">僅能include本地檔案,即同一個jsp引擎。
值得注意的是:html的<base>標籤。在html文件中,如果有下列標籤<base href="::URL::
http://www.aleyxchow.com/"/>,那麼象<img  src="image.jpg"/>將導致瀏覽器載入::URL::http://www.aleyxchow.com/image.jpg;但是對於<jsp:include>而言,<base>無效,include僅查詢本地伺服器上的檔案。

V.標籤<jsp:forward>也有與<jsp:include>同樣的限制。
注意,如果A.jsp forward to B.jsp,那麼,B.jsp檔案不能通過該標籤forward to A.jsp

VI.<%@include%>與<jsp:include>的區別
關鍵區別在於<%@include%>找到目標檔案並將它插入到當前jsp檔案中,就好像你通過文字編輯器的copy/paste操作一樣。相反,<jsp:include>在當前jsp頁面執行的時候定位檔案。這種區別產生了不同的行為:
假設有a.jsp,在a中include檔案b,那麼
1)
<%@include%>如果b改變,a不會發現b的改變直到a也發生改變。
<jsp:include>馬上察覺到變化。

2)
<%@include%>b是基本的文字,jsp片斷等,不能是一個java servlet
<jsp:include>允許包括servlet

3)
<%@include%>在某些情況下要比<jsp:include>更有效率,但是它佔用更多的硬碟空間。當然,在此,兩者的執行效率不太重要。

4)
<%@include%>a、b是整合在一起的檔案,所以可能產生變數名等的衝突問題。它們必須保持一致。
<jsp:include>可以對不同的變數使用相同名字,對同一個標籤庫使用不同字首,a、b是相互獨立的檔案。


2-2-3jsp tag libraries

標籤庫使用與jsp:不同的字首,它們必須在使用前用偽標籤(pseudo-tag)作為定向(directive)匯入。

定向不是很嚴格的遵循類xml語法。例如:
<%@ taglib %>

使用標籤庫前,你必須明確它的uri,在此,它的功用不是從網上下載任何資源,而是用於區別不同的標籤庫。

<%@ taglib uri="::URL::
http://www.acme.com/custom.tld"  prefix="acme" %>

標籤庫被uri所標誌,使用acme作為字首。在當前文件中,標籤<create>就應該被寫作:<acme:create>。在jstl中定義的字首只是為了便於他人閱讀你的原始碼而推薦使用的,你完全可以自己定義。

jstl標籤庫

I.核心庫
名稱 core library
字首 c
URI  ::URL::http://java.sun.com/jstl/core
例子 <c:forEach>
用途 訪問調製記憶體中資料,條件判斷,迭代

II.xml處理庫
名稱 xml prcessing liberary
字首 x
URI  ::URL::
http://java.sun.com/jstl/xml
例子 <x:forEach>
用途 解析xml文件,輸出xml文件中的元素,基於xml的內容做判斷

III.國際化&格式化
名稱 inernationalization(i18n) & formatting library
字首 fmt
URI  ::URL::http://java.sun.com/jstl/fmt
例子 <fmt:formatDate>
用途 讀取輸出數字,日期,多語言下顯示

IV.資料訪問
名稱 database(sql) access
字首 sql
URI  ::URL::http://java.sun.com/jstl/core
例子 <sql:query>
用途 輔助資料庫互動

jstl庫的呼叫如下格式:

<@ taglib prefix="c" uri="::URL::http://java.sun.com/jstl/core "%>
<@ taglib prefix="x" uri="::URL::http://java.sun.com/jstl/xml "%><@ taglib prefix="fmt" uri="::URL::http://java.sun.com/jstl/fmt "%><@ taglib prefix="sql" uri="::URL::http://java.sun.com/jstl/sql"%>  

相關推薦

jstl in action 第二http://www.blogcn.com/blog/trackback.asp?mydiary=23140875

第二章:xml、jsp基礎本章內容:I.xml基本語法II.jsp介紹III.context中的jstl標籤庫IV.jsp範圍變數2-1xml介紹首 先要提一下html。html擁有一套標籤,如<img>,標籤擁有修飾符或成為屬性(attribute)。如在<

css中常見的 cursor 屬性http://www.w3school.com

指針 mov ssh 右移 tab body poi ossh idt 值描述 url 需使用的自定義光標的 URL。 註釋:請在此列表的末端始終定義一種普通的光標,以防沒有由 URL 定義的可用光標。 default 默認光標(通常是一個箭頭) auto

JS中arguments物件的常見用法https://www.cnblogs.com/LMJBlogs/p/6024148.html

瞭解這個物件之前先來認識一下javascript的一些功能: 其實Javascript並沒有過載函式的功能,但是Arguments物件能夠模擬過載。Javascrip中每個函式都會有一個Arguments物件例項arguments,它引用著函式的實參,可以用陣列下標的方式"[]"引用arguments的元素

數字證書原理 - http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html

在操作 computer ide iis 中斷 計算 虛擬 from 上進 文中首先解釋了加密解密的一些基礎知識和概念,然後通過一個加密通信過程的例子說明了加密算法的作用,以及數字證書的出現所起的作用。接著對數字證書做一個詳細的解釋,並討論一下windows中數字證書的管理

數據挖掘 - 算法 - ID3 - http://www.cnblogs.com/dztgc/archive/2013/04/22/3036529.html

str htm bar c++代碼 度量 進行 初始化 ++ 預測 1 簡介   決策樹學習是一種逼近離散值目標函數的方法,在這種學習到的函數被表示為一棵決策樹。 2 決策樹表示   決策樹通過把實例從根節點排列到某個葉子結點來分類實例,葉子結點即為實例所屬的分類。樹上的

js深拷貝和淺拷貝----尊重原創,:http://www.cnblogs.com/yichengbo/archive/2014/07/10/3835882.html

一、陣列的深淺拷貝 在使用JavaScript對陣列進行操作的時候,我們經常需要將陣列進行備份,事實證明如果只是簡單的將它賦予其他變數,那麼我們只要更改其中的任何一個,然後其他的也會跟著改變,這就導致了問題的發生。 var arr = ["One","Two","Th

教你寫私募基金計劃書(http://www.iwenbi.com/)

在這裡特別提一下如何論證風控人員的專業能力。協會曾多次在反饋意見中提到,“負責合規風控的高階管理人員應獨立地履行對內部控制監督、檢查、評價、報告和建議的職能。”基金管理人可以結合本機構的內部控制檔案內容,對風控人員履職過程中如何履行監督、檢查、評價、報告和建議職能幾個方面分別論述。此外,為了避免“假、大、空

使用 Jersey 和 Apache Tomcat 構建 RESTful Web 服務---很詳細,http://www.ibm.com/developerworks/cn/web/wa-aj-t

REST 在 2000 年由 Roy Fielding 在博士論文中提出,他是 HTTP 規範 1.0 和 1.1 版的首席作者之一。 REST 中最重要的概念是資源(resources),使用全球 ID(通常使用 URI)標識。客戶端應用程式使用 HTTP 方法(GE

new和delete,malloc和free http://www.kuqin.com/effectivec2e/ch01a.htm

條款3:儘量用new和delete而不用malloc和free malloc和free(及其變體)會產生問題的原因在於它們太簡單:他們不知道建構函式和解構函式。 假設用兩種方法給一個包含10個string物件的陣列分配空間,一個用malloc,另一個用new: stri

Spring in action 第二 裝配Bean

在Spring中,物件無需自己查詢或建立與其關聯的其他物件,容器負責把相互協作的物件引用賦予各個物件。 裝配:建立應用物件之間協作關係的行為 2.2 自動化裝配bean @Component 註解:表明該類會作為元件類,並告知Spring要為這個類建立bean @Component 註解:能夠在Spr

eclipse 集成Maven:http://blog.csdn.net/wode_dream/article/details/38052639

lin loser 說明 位置 到你 ide lan core fontsize 當自己越來越多的接觸到開源項目時,發現大多數的開源項目都是用maven來夠建的。並且在開發應用時,也越來越意識到maven的確會解決很多問題,如果你要了解maven,可以參考:Maven入門

java編碼轉換過程http://cmsblogs.com/?p=1475

tex src bytes .com 設定 界面 console 獲取 java程序 一、java編碼轉換過程(轉自http://cmsblogs.com/?p=1475) 我們總是用一個java類文件和用戶進行最直接的交互(輸入、輸出),這些交互內容包含的文字可能會包含

卷積在深度學習中的作用http://timdettmers.com/2015/03/26/convolution-deep-learning/

範圍 SM 全連接 判斷 contact con 發展 .dsp length 卷積可能是現在深入學習中最重要的概念。卷積網絡和卷積網絡將深度學習推向了幾乎所有機器學習任務的最前沿。但是,卷積如此強大呢?它是如何工作的?在這篇博客文章中,我將解釋卷積並將其與其他概念聯系起來

fastjson的使用:http://blog.csdn.net/wx_962464/article/details/37612861

在開發Android的過程中,如果我們經常與伺服器打交道,更新資料等等,那麼json必然是個好的資料格式,但是有了json我們要解析它,使用原生的解析也可以,但是很不高效,所以這裡介紹兩種json資料解析的方式,一種是FastJSon ,這個是阿里巴巴出的,號稱最快的解

MySQL NULL 值處理https://www.w3cschool.cn/mysql/mysql-null.html

MySQL NULL 值處理 我們已經知道MySQL使用 SQL SELECT 命令及 WHERE 子句來讀取資料表中的資料,但是當提供的查詢條件欄位為 NULL 時,該命令可能就無法正常工作。 為了處理這種情況,MySQL提供了三大運算子: IS NULL: 當列的值是NULL,此運算子返回true。IS

Hibernate物件三種狀態詳細分析http://blog.csdn.net/redarmy_chen/article/details/7069482

在hibernate中有三種狀態:瞬時態(Transient)、 持久態(Persistent)、脫管態(Detached)。處於持久態的物件也稱為PO(Persistence Object),瞬時物件和脫管物件也稱為VO(Value Object)。通過自己在網上的搜尋,

公司流程不規範的情況下,如何做好測試工作?http://www.51testing.com/html/11/15160311-3719792.html

www html 相關 負責人 ron 測試 testin pac div 這對我們來說是個機遇! 首先我要說,公司目前制度不規範,對我們來說是個機遇,絕對是個機遇!遇到這個好機會你還在等什麽?如果說這個公司已經足夠好了,那他還請你過來做什麽?你的能力還足以讓公司有更高的

python 進階(http://python.jobbole.com/82633/)

火狐 數字 2.7 傳遞 https 可用 ips 編碼器 XML 網絡 通用 urllib -網絡庫(stdlib)。 requests -網絡庫。 grab – 網絡庫(基於pycurl)。 pycurl – 網絡庫(綁定libcurl)。 urllib3 – Py

idea 設置 https://www.cnblogs.com/jajian/p/8136672.html

存在 mep ssh .com 重建 運行 create deploy imm 前面已經介紹過Settings上中部分,接下來繼續剩余的部分 IntelliJ IDEA(四) :Settings(上) IntelliJ IDEA(五) :Settings(中) 0|1一、B

Phoenix二級索引(Secondary Indexing)的使用:https://www.cnblogs.com/MOBIN/p/5467284.html

摘要 HBase只提供了一個基於字典排序的主鍵索引,在查詢中你只能通過行鍵查詢或掃描全表來獲取資料,使用Phoenix提供的二級索引,可以避免在查詢資料時全表掃描,提高查過效能,提升查詢效率 測試環境: 資料約370萬 資料格式:(資料來自搜狗實驗室) 三節點叢集(一主兩從,hadoo