JSTL叫做标准标签库,但实际上它是由5个功能不同的标签库组成。当使用标签库时,必须在jsp页面的顶部使用<%@ taglib %>指令定义引用的标签库和访问前缀。这5中标签库及taglib指令如下所示:
(核心标签库)<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
(格式标签库)<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
(SQL标签库)<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
(XML标签库)<%@ taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml" %>
(函数标签库)<%@ taglib prefix="functions" uri="http://java.sun.com/jsp/jstl/functions" %>
其中常用的就是(核心标签库)和(格式标签库)
一:(核心标签库)(常用的)
1.<c:out >将表达式的值输出到页面上相当于<%= %>或EL表达式${}
(有两种语法格式,一种有标签体一种没有标签体,但是输出的结果都是相同的,value就是定义要输出的值)
2.<c:set />变量设置标签
3.流程控制标签:
I、<c:if>条件判断标签,虽然没有对应的else标签,但是JSTL提供了<c:chose >, <c:when >, <c:otherwise >标签可以实现if else的功能。
<c:if>有两种语法格式:
语法一:
语法二:
II、<c:chose >, <c:when >, <c:otherwise >标签,在一个<c:choose>标签中可以包含多个<c:when>标签来处理不同条件的业务逻辑,但是只能有一个<c:otherwise>标签来处理默认条件的业务逻辑。(<c:chose >标签只能作为<c:when >, <c:otherwise >标签的父标签来进行使用,它没有相关的属性,另外在<c:chose >标签中除了空白字符外只能包括 <c:when >, <c:otherwise >标签)
实例如下:
III、循环标签(常用的是<c:forEach>)
<c:forEach>循环标签可以根据循环条件,遍历数组和集合类中的所有或者部分数据,它的语法格式也有两种。
首先说明一下forEach中的各项属性:
items:用于指定循环遍历的对象,多用于数组或者集合类。该属性的属性值可以使数组、集合类、字符串和枚举类型,一般通过EL表达式指定,(在集合成员迭代中这是必选属性),其他属性均是可选属性。
var:用于指定循环体的变量名,该变量用于存储items指定的对象的成员。
begin:用于指定循环的起始位置,如果没有指定,则从集合的第一个值开始迭代。可以使用EL。
end:用于指定循环的终止位置,如果没有指定,则一直迭代到集合的最后一位。可以使用EL。
step:用于指定循环的步长,可以使用EL。
varStatus:用于指定循环的状态变量,该属性还有4个状态属性:
index:int类型,当前循环的索引值,从0开始
count:int类型,当前循环的循环计数,从1开始
first:是否为第一次循环
last:是否为最后一次循环
语法一:集合成员迭代
语法二:数字索引迭代
当加上属性step时:
<c:forEach>标签还可以加varStatus="idx",然后在里面我们可以进行判断比如${idx.index>0}或者${idx.index++}
获取一个list集合的长度,可以使用fn函数
要导入函数标签库<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
${fn:length(product.selllingPoints)}