jsp 標準標籤庫簡析

來源:互聯網
上載者:User

一、JSTL簡介
引入:在JSP以及javaBean中 ,當我們在網頁中使用迴圈,或者使用對象方法串連資料庫時,我們都不可避免的需要使用到jsp的指令碼編製元素,其中嵌有大量的java代碼,現在開發人員想儘可能的避免使用jsp指令碼編製元素,進一步將應用程式的顯示層和業務層完全分離,更加有利於應用程式的分工協作,jsp開發人員指定了 JSTL ,提供了一組統一的通用的自訂標籤檔案,並將這些檔案組合在一起,形成了jsp標準標籤庫,即JSTL。
1) 定義:包含編寫和開發JSP頁面的一組標準標籤
a) 特點:為開發人員提供了一個無指令碼環境,無需編寫JAVA指令碼
b) 包含
1. 核心標籤庫
2. SQL標籤庫
3. 國際化(I18N)與格式化標籤庫
4. XML標籤庫
c) 分類 : 兩個版本
1. 使用 EL
2. 使用請求時運算式
2) 作用
a) 進一步簡化開發,簡化頁面, 實現頁面脫離jsp指令碼元素
b) 讓頁面儘可能少的出現java代碼
c) 優勢:與EL運算式配合使用,可以用EL 代替屬性值 進一步動態改變
3) 使用
a) 匯入標籤庫(Eclipse等工具中需要做這一步)
b) 使用標籤庫中標籤的實施步驟
i. 將JSTL對應的JAR檔案:jstl.jar、standard.jar添加到應用程式的WEB-INF/lib目錄(這兩個jar檔案見課件目錄” JSTL標籤庫”)
ii. 在編寫的jsp頁面中指定標籤庫的描述資訊:
文法:<%@ taglib prefix=”c” uri=”http://java.sun.com/jstl/core_rt” %>
關於上述文法使用的擴充:
<%@ taglib prefix =”標籤別名” uri =”標籤庫的位置“>
1. 標籤別名常用c
2. 標籤庫的位置:(即uri的設定)
a) 教材上:” http://java.sun.com/jstl/core_rt “ 指向sun公司網站上的庫檔案地址,注意這裡只是個地址指向,即使沒有上網,在工具中也已經對應到工程中的路徑了(注意:此時要先將標籤庫的兩個jar檔案放入”工程\WEB-INF\lib”目錄下。)
b) 也可使用:”/WEB-INF/c.tld ”(但要注意:此時要先將標籤庫兩個jar檔案中的一個standard.jar檔案解壓後的目錄META-INF中的所有*.tld檔案放入”工程名/WEB-INF/”目錄下,即保證該目錄下有c.tld檔案)
注意:上述兩種匯入標籤庫的方式,以第一種為佳,即只需要將兩個標籤庫jar檔案放入”工程\WEB-INF\lib”目錄下即可。
c) 在JSP中使用
3. <c: xxxxxx 屬性名稱=“屬性值” 屬性名稱=“屬性值”>
4. xxxxx就是標籤庫中提供的各種功能,詳述如下:
二、核心標籤庫-----core 或 c.tld
a) 分類:
1. 通用標籤:操作JSP頁面建立的範圍變數
2. 條件標籤:操作條件運算 判斷與處理
3. 迴圈標籤:操作迴圈運算
b) 通用標籤
1. 設定,刪除,顯示在JSP頁面內建立的變數值或對象值
2. 變數的範圍是由設定時的scope 屬性決定
3. <c: set> 用於設定變數或者對象屬性的值
<c:set var=”變數名” value=”變數值” scope=”範圍範圍”/>
<c:set target=”對象名” property=”屬性名稱” value=”值”/>
:注意: “變數值” 可以是 EL運算式
4. <c: out> 用於動態顯示資料(功能類似於EL)
1:<c:out value=” 運算式” default=”預設值” escapeXml=”true/false” >
2: 注意:運算式 可以是 1》普通的常量值
2》輸出已經設定的變數值:${變數的名稱}
5. <c: remove>用於刪除建立的變數
a) <c:remove var=”變數的名稱” scope =”範圍”>
(案例:示範上面幾個標籤)
c) 條件標籤
1. 提供條件運算, 兩種類型: if choose
2. <c: if> 文法
a) <c:if test=”條件 ” var=” 存放測試條件結果的變數” scope=”範圍” >
b) 。。。。。。。條件體
c) </c:if>
d) var 存放的是:結果為true 或 false
e) 不能實現else 由下面的實現
3. <c:choose>文法
a) <c:choose>
i. <c:when test=”條件運算式1”>
ii.需要處理的語句1
iii. </c:when>
iv. <c:when test=”條件運算式2”>
v.需要處理的語句2
vi. </c:when>
vii. <c:otherwise>
viii.需要處理的語句
ix. </c:otherwise>
b) </c:choose>
(案例 three.jsp)
d) 迭代標籤
1. 分兩種: forEach forTokens
2. forEach
簡單的應用
<c:forEach var=”迴圈控制變數” test=”迴圈條件” begin=”迴圈開始值” end=”迴圈結束值” varStatus=”儲存迴圈狀態的變數”>
迴圈體
</forEach>
用於集合對象的訪問
<c:forEach var=”存放集合目前記錄的變數” items=”要輪循的集合名” begin=”集合的起始索引位置” end=”集合的結束位置”>
</forEach>
注意:如果沒有設定begin,end將檢索所有元素,step沒設定預設為1
3. forTokens (與<c:forEach>有區別,用於輪循一個字串)
<c:forTokens items=”要輪循的字串” delims=”單詞的分界符” var=”存放單詞的變數”>
</c:forTokens>
(案例: 示範上面幾個標籤)
三、SQL 標籤庫---- sql.tld
一般的企業級的應用是離不開資料庫操作的,在許多時候都需要在JSP頁面中訪問資料庫,因此提供對資料庫訪問的支援就變的十分重要了,在JSTL中的SQL標記庫就提供了一套可以對資料庫進行訪問,查詢,更新等操作的標記,極大的方便了JSP頁面中資料庫訪問
1、 作用:用於進行資料庫的操作
2、 在JSP頁面中加入標籤庫
<%@ taglib uri=“http://java.sun.com/jstl/sql_rt ” prefix=”sql” %>
3、 具體使用標記
a) 設定資料來源<sql:setDataSource>
具體用法:<sql:setDataSource driver=”驅動類路徑” url=”串連的資料庫設定” user=”使用者名稱” password=”密碼” var=”連線物件名”/>
b) 查詢資料<sql:query>
具體用法:
① <sql:query sql=”查詢語句” var=”結果集名” scope=”結果集儲存的範圍” dataSource=”關聯的資料來源對象” maxRows=”最大行數” startRow=”開始行的索引”/>
② <sql:query var=”結果集名” scope=”儲存範圍”>
select 語句
</sql:query>
操作擷取的結果集
<sql:query var=”students” scope=”session” sql=”select * from stu” dataSource=”conn”/>
${students.rowCount}可返回結果集中的資料行數
${students.columnNames}可返回所有欄位的集合
${students.rowByIndex}返回結果集中某行的資料集合
c) 資料更新<sql:update>
具體用法:
① <sql:update sql=”SQL語句” dataSource=”資料來源對象名”/>
② <sql:update dataSource=”資料來源對象名”>
SQL語句
</sql:query>
d) 事務應用<sql:transaction>
具體用法:
<sql:transaction dataSource=”資料來源對象名”isolation=”交易隔離等級”>
<sql:query>或者<sql:update>
</sql:transaction>
其中上面的隔離等級:
read_committed,read_uncommited,repeatable,serializable
注意:如果在事務中設定了dataSource屬性,在裡面的標記中就不需設定了。
e) 參數設定<sql:param>
① 作用:在作查詢或者資料操作時參數的設定
② 使用:通常是做為<sql:query>和<sql:update>標記的子標記
案例:
<sql:query dataSource=”conn” var=”stus” scope=”page”>
select * from student where stuage>?
<sql:param value=”參數值”/>
</sql:query>
四、國際化和格式化標籤----fmt 或 fmt.tld
1、 作用:對數字和日期時間的輸出進行標準化,解決中文亂碼問題
2、 在jsp頁面加入標籤庫
<%@ taglib uri=“http://java.sun.com/jstl/fmt_rt” prefix=”fmt” %>
3、 具體標籤的使用
a) <fmt:setLocale>
① 作用:用於JSP頁面的本地化
② 使用:<fmt:setLocale value=”語言和地區”/>
b) <fmt:formatNumber>
① 作用:用於JSP頁面資料的格式化
② 使用:<fmt:formatNumber type=”number|currency|percent” value=”要格式化的資料” />
c) <fmt:formatDate>
① 作用:用於JSP頁面日期的格式化
② 使用:<fmt:formatDate type=”time|date|both” value=”要格式化的日期資料”/>
d) <fmt:requestEncoding>
① 作用:指定請求資料的編碼方式
② 使用:<fmt:requestEncodding value=”編碼方式” />
例如:<fmt:requestEncoding value=”gb2312”/>
一般地,也可這樣使用:
a) 建立好 屬性檔案 比如叫 len_zh .properties
b) <fmt:setLocale value=”指向檔案的名稱 zh”> (zh為中文,en為英文,固定的,Y2課程裡會講到。)
c) <fmt:setBundle basename=”檔案的名稱 len”> (len為自起名稱)
d) <fmt:message key=”屬性檔案中的關鍵字”> (屬性檔案為len_zh .properties)
注意:國際化時,*.properties檔案要放在classes目錄下。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.