文章目录
什么是JSTL标签库?
Java Standard Tag Lib(Java标准的标签库)
JSTL标签库通常结合EL表达式一起使用。目的是让JSP中的java代码消失。
标签是写在JSP当中的,但实际上最终还是要执行对应的java程序。(java程序在jar包当中。)
使用JSTL标签库的步骤:
-
第一步:引入JSTL标签库对应的jar包。
tomcat10之后引入的jar包是:
jakarta.servlet.jsp.jstl-2.0.0.jar
jakarta.servlet.jsp.jstl-api-2.0.0.jar -
第二步:在JSP中引入要使用标签库。(使用taglib指令引入标签库。)
例如:<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
prefix=“这里随便起名字就行了,核心标签库,默认的叫做c” -
第三步:在需要使用标签的位置使用即可。表面使用的是标签,底层实际上还是java程序。
JSTL标签的原理
以这个为例<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
以上uri后面的路径实际上指向了一个xxx.tld文件。tld文件实际上是一个xml配置文件。
配置文件tld解析
<taglib>
<!-- 标签库版本号 -->
<tlib-version>1.0</tlib-version>
<!-- JSP版本号 -->
<jsp-version>2.0</jsp-version>
<!-- 当前标签库的前缀 -->
<short-name></short-name>
<tag>
<description>对该标签的描述</description>
<name>catch</name> 标签的名字
<tag-class>org.apache.taglibs.standard.tag.common.core.CatchTag</tag-class> 标签的实现类路径。
<body-content>JSP</body-content> 标签体当中可以出现的内容,如果是JSP,就表示标签体中可以出现符合JSP所有语法的代码。例如EL表达式。
<attribute>
<description>
对这个属性的描述
</description>
<name>var</name> 属性名
<required>false</required> false表示该属性不是必须的。true表示该属性是必须的。
<rtexprvalue>false</rtexprvalue> 这个描述说明了该属性是否支持EL表达式。false表示不支持。true表示支持EL表达式。
</attribute>
</tag>
</taglib>
tld标签库描述文件
1. <taglib>标签
标签用来设置整个标签库信息
属 性 | 说 明 |
---|---|
tlib-version | 标签库版本号 |
jsp-version | JSP版本号 |
short-name | 当前标签库的前缀 |
uri | 页面引用的自定义标签的 uri 地址 |
name | 自定义标签名称 |
tag-class | 自定义标签实现类路径 |
description | 自定义标签的功能描述 |
attribute | 自定义标签的指定属性,可以有多个 |
2. <tag>标签
标签用来定义标签具体的内容
属 性 | 说 明 |
---|---|
name | 自定义标签名称 |
tag-class | 自定义标签实现类 |
body-content | 有 3 个值:empty(表示没有标签体)、JSP(表示标签体可以加入 JSP 程序代码)、tagdependent(表示标签体中的内容由标签自己处理) |
description | 自定义标签的功能描述 |
attribute | 自定义标签功能的指定属性,可以有多个 |
variable | 自定义标签的变量属性 |
3.<attribute>标签
标签用来定义 标签中的属性,attribute本质就是JSP页面向tag文件传输数据的一种应用
属 性 | 说 明 |
---|---|
name | 属性名称 |
description | 属性描述 |
required | 指定属性是否是必须的,默认值:false |
rtexprvalue | 属性值是否支持 JSP 表达式 |
type | 定义该属性的 Java 类型,默认值:String |
fragment | 如果声明了该属性,属性值将被视为一个 JspFragment |
4. <variable> 标签
标签用来定义 标签中的变量属性,variable本质就是实现Tag向JSP返回数据。
属 性 | 说 明 |
---|---|
declare | 变量声明 |
description | 变量描述 |
name-from-attribute | 指定的属性名称,其值为变量,在调用 JSP 页面时可以使用的名字 |
name-given | 变量名(标签使用时的变量名) |
scope | 变量的作用范围,有 3 个值:NESTED 开始和结束标签之间、AT_BEGIN 从开始标签到页面结束、AT_END 从结束标签之后到页面结束 |
variable-class | 变量的 Java 类型,默认值:String |
JSTL标签分类
根据JSTL标签所提供的功能,可以将其分为5个类别。
- 核心标签
- 格式化标签
- SQL 标签
- XML 标签
- JSTL 函数