自定义标签是,用户定义自己的处理的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 |