自定義標簽是,用戶定義自己的處理的tag的機制。
JSTL是,JSP用標准自定義標簽。從JSTL Ver.1.2開始成為JavaEE5的子集。比較有名的是Glassfish。Tomcat上開發的話,需要自己配置JSTL。
1、JSTL的提供形式
自定義標簽通常有下述兩部分內容:
- Tag類文件
- TLD (tag library descriptor)
2、JSTL的使用步驟
自定義標簽的jar文件下載(地址:https://jstl.java.net/)后,按如下順序使用:
1)把JAR文件放到項目的lib里
2)做成只包含web-app要素的web.xml文件,以防止命令行上的錯誤輸出。
例:
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
3)jsp文件里定義taglib。
例:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
這里,
- prefix屬性:JSP里使用JSTL時的前綴。習慣上用“c”。
- uri屬性:識別JSTL的字符串。按照JSTL說明文檔指定。
4)使用taglib
例:<c:out value="你好!"/>
注意JSTL和Servlet/JSP的版本對應
- JSTL 1.2 ⇒ JSP 2.1 (Tomcat6)
- JSTL 1.1 ⇒ JSP 2.0 (Tomcat5)
- JSTL 1.0 ⇒ JSP 1.2 (Tomcat4)
3、JSTL種類
1)JSTL種類
種類 | 說明 | uri | 前綴 |
core | 循環處理、條件分支、變量的取得/設定等基本tag | http://java.sun.com/jsp/jstl/core | c |
il8n | 數值、日期的格式,國際化對應 | http://java.sun.com/jsp/jstl/fmt | fmt |
xml | XML文檔的解析,XSL格式變換 | http://java.sun.com/jsp/jstl/xml | x |
function | 字符串、集合操作 | http://java.sun.com/jsp/jstl/functions | fn |
SQL | SQL的執行等DB操作 | http://java.sun.com/jsp/jstl/sql | sql |
2)core tag
功能 | tag | 說明 |
變量 | <c:set> | 設置變量 |
<c:remove> | 刪除變量 | |
流程控制 | <c:if> | 單一條件分支 |
<c:choose> <c:when> <c:otherwise> |
復數條件分支 | |
<c:forEach> | loop | |
<c:forTokens> | 字符串查找 | |
URL管理 | <c:import> | 文件import |
<c:redirect> | redirect | |
<c:url> | URL生成。 | |
其它 | <c:out> | 輸出 |
<c:catch> | 異常處理 | |
<c:param> | 參數指定 |
(1) <c:set> tag
屬性 | 必須 | 說明 |
var | × | 變量名。var和target指定任意一個。 |
target | × | 變量名。和proparty屬性一起使用。使用javaBeans、Map的時候需要指定。 var和target指定任意一個。 |
property | × | 和target一起使用。指定javaBeans的屬性名,或Map的key。 |
value | × | 值 |
scope | × | 變量的有效范圍「page、request、session、application」。 默認為page。 |
(2) <c:remove> tag
屬性 | 必須 | 說明 |
var | ○ | 變量名。 |
scope | × | 變量范圍 |
(3) <c:if> tag
屬性 | 必須 | 說明 |
test | ○ | 條件 |
var | × | 保存結果(true/false)的變量名。 |
scope | × | 變量范圍「page、request、session、application」。 默認是page |
剩下有空時再追加。。。。