javaee筆記(9)JSTL2

格式化標記庫

又稱爲國際化標記庫,提供與區域設置和日期、數字格式化相關的各種標記。引入格式化標記庫的taglib指令如下:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/fmt” preix=“fmt” %>
fmt:setBundle標記
用來設置將要用到的資源文件,它的基本用法爲:
<fmt:setBundle basename="" [var=""] [scope=""]/>
fmt:message標記
用來讀取資源文件中的消息,它的基本用法爲:
<fmt:message bundle="" key="" var="" scope="" />
fmt:param標記
用來給資源文件中的字符串傳入參數。它的基本用法爲:
<fmt:param value=“值”/>
值也可以寫在標記體中,例如:
fmt:param值</fmt:param>
fmt:param一般在fmt:message標記內使用。

函數標記庫

主要提供與字符串處理相關的若干函數。引入函數標記庫的taglib指令如下:
<%@ taglib uri=“http://java.sun.com/jsp/jstl/functions” preix=“fn” %>
函數標記庫提供的主要函數如下:
length():求字符串長度。
toUpperCase()、toLowerCase():用於字符串大小寫轉換。
substring()、substringAfter()、substringBefore():取字符串的子串。
trim():去掉字符串後的空格。
replace():替換字符串中的特定字符。
escapeXml():在字符串中忽略XML字符。
indexOf()、startsWith()、endsWith()、contains()、containsIgnore Case():檢查是否包含指定的子串。
split():將字符串分割成數組。
join():將字符串添加到集合中。

SQL標記庫

提供與數據庫操作相關的指令。引入SQL標記庫的taglib指令如下:
<%@taglib preix=“sql" uri=“http://java.sun.com/jsp/jstl/sql” %>
sql:setDataSource:該標記用於設置數據源
sql:query:用於查詢數據庫的數據
sql:update:語法和sql:query相同,但在update標籤中只能使用UPDATE、INSERT、DELETE語句。
sql:paramsql:dateParamsql:timeParamsql:timestampParam:用於設置帶參數SQL語句的參數值
sql:transaction:把多條更新類SQL語句放在sql:transaction </sql:transaction>之間就能把它們作爲一個整體事務來處理。

例子:

//.jsp
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head> 
   <body>
<sql:setDataSource driver="org.apache.derby.jdbc.ClientDriver" 
url="jdbc:derby://localhost:1527/myeclipse" user="classiccars" password="myeclipse" var="ds" scope="session"/>
<sql:query var="result" dataSource="${ds}">//查詢數據
select * from L
</sql:query>
<c:forEach items="${result.rows}" var="row">
${row.L},${row.A}<br/>
</c:forEach>

<sql:update var="row" dataSource="${ds}">//插入數據
insert into STUDENT  values(?)
<sql:param>${param.u}</sql:param>
</sql:update>

  </body>
</html>

XML標記庫

XML標記庫用於訪問XML數據的流程控制 。主要標籤有<x:if>、<x:choose>和<x:forEach>,它們與核心標籤庫中的<c:if>、<c:choose>和<c:forEach>類似。區別是XML流程控制標籤中的變量是select屬性指定的XPath表達式,而核心標籤庫則是普通EL表達式。
注意:XPath表達式的寫法比較靈活,可選擇自己習慣的、直觀的、易於理解的形式。

自定義標記

在JSP1.2中,提供了javax.servlet.jsp.tagext.TagSupport和BodyTagSupport等類支持用戶自定義標記。JSP2.0還新增了javax.servlet.jsp.tagext.SimpleTagSupport類支持用戶自定義簡單標記。
如果要自定義複雜的標記處理程序,則應選擇TagSupport和BodyTagSupport等作標記父類。
SimpleTagSupport類是一個工具類,它實現了SimpleTag接口,並添加了一些方法來方便讀取標記中的屬性值和標記體中的內容,用戶程序通過繼承這個類可編制簡單的標記處理程序。
例子:
設計一個myTag:add的標記,它能夠完成1+2+…+n的功能,計算結果存儲在一個作用域變量中。該標記調用方法爲:
<myTag:add number=“100” var=“sum” scope=“page”/>

<myTag:add var=“sum” cope=“page”>100</myTag:add>
步驟
首先爲標記編寫處理程序。新建類AdderTag繼承自SimpleTagSupport,代碼參照源碼光盤。
編寫標記描述文件*.tld。代碼參照源碼光盤。
在web.xml中部署標記庫。在根元素中添加如下的部署信息:


http:www.abc.com/tag
/WEB-INF/tag.tld


新建測試頁面exam328.jsp,在標記中輸入如下代碼:

<%@ taglib uri="http://www.abc.com/tag" prefix="myTag" %> ${aa }
100
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章