什么是jstl?
apache 开发的一种jsp标签,后来捐献给了sun,sun将其命名为jstl(即 java 标准标签库);
jstl 如何使用?
step1:导入 jstl 相关的jar文件。
step2:使用taglib指令引入要使用的jap标签
几个核心标签
1)if 标签
test属性值需要计算,当test为true时,容器会执行标签体的内容
test属性值可以使用el表达式来赋值
<c:if test="">
标签体
</c:if>
Maven的jar包jstl.jar包内c.tld
jsp标签的运行过程
容器依据别名(比如:"c")找到对应的命名空间(比如“http://java.sun.com/jsp/jstl/core”),然后依据命名空间找到jsp标签的描述文件(比如找到c.tld),接下来就可以依据jsp标签名(比如IfTag),最后调用该标签类的方法。
choose标签
<c:choose>
<c:when test=" ">
标签体
</c:when>
<c:otherwise>
</c:otherwise>
<c:choose>
a. when可以出现在1次或者多次,相当于一个else if 语句。当test属性值为true时,执行标签体的内容。test属性可以使用el表达式 来计算。
b. otherwise可以出现0次或者1次,表示例外(即最后一个else语句)
forEach标签
<c:forEach items=" " var=" " varStatus=" ">
</c:forEach>
a. 用于遍历集合或者数组。
b. items属性用于指定要遍历的集合或者数组,可以使用el表达式来赋值。
c. var属性用于指定绑定名。
注:绑定范围固定是pageContext ,该标签每次从集合或者数组中取一个元素,然后绑定pageContext上。
d. varStatus属性用于指定绑定名
注:绑定范围固定是pageContext,绑定值是一个特殊的对象,该对象提供了一些方法,用于获得当前遍历的状态。
getIndex方法:获得当前正在被遍历的元素的下标(从0开始)。
getCount方法:获得正在进行第几次遍历(从1开始)。
自定义标签:(简洁并复用)
编程步骤
step1:写一个java类,继承SimpleTagSupport类
注:jsp标签分为简单标签技术和复杂标签技术,继承SimpleTagSupport类属于简单标签技术。
step2: override doTag方法,在该方法里面写处理逻辑。
step3: 在.tld文件里面描述标签。
标签的执行过程
容器依据标签的命名空间找到标签的描述文件,接下来依据标签的名称找到对应的标签类,然后将该类实例化,然后调用该标签类的set方法完成属性赋值操作,最后调用标签类的doTag方法。