java Server Pages Standard Tag Libray(JSTL):JSP 标准标签库,是一个定制标签类库的集合,用于解决一些常见的问题。
核心标签库:http://java.sun.com/jsp/jstl/core 包含 Web 应用的常见工作,
比如:循环、表达式赋值、基本输入输出等。
格式化标签库:http://java.sun.com/jsp/jstl/fmt 用来格式化显示数据的工作,
比如:对不同区域的日期格式化等。
使用步骤
1、将jstl.jar和standard.jar拷贝到项目的WEB-INF的lib目录下。
2、在需要使用JSTL标签库的JSP页面中导入指定的库。
<%@ taglib uri=“标签库的路径(jsp)” prefix=“前缀” %>
注:前缀是自定义的,不过一般会使用大家默认的前缀名
3、使用标签库中的标签
<前缀:标签名 属性名=“属性值”>
</前缀:标签名>
if标签
if 标签先对某个条件进行测试,如果该条件运算结果为 true, 则处理它的主体内容。
测试结果保存在一个 Boolean 对象中,并创建一个限域变量来引用 Boolean 对象。
可以利用 var 属性设置限域变量名,利用 scope 属性来指定其作用范围(默认是page当前页)。
用法:
没有主体内容
<c:if test=“条件判断” var=“限域变量名(接收条件判断的返回值)” scope=“域范围page|request|session|applition”></c:if >
有主体内容
<c:if test=“条件判断” >
// 主体内容
</c:if>
注意:
1、JSTL中没有else标签,如果想要实现else的效果,需要通过if标签设置两个完全相反的条件。
2、test属性必须设置,其他属性可省略。
choose、when、otherwise标签
格式:
<c:choose>
<c:when test="条件判断">
// 满足条件执行的内容
</c:when>
<c:when test="条件判断">
// 满足条件执行的内容
</c:when>
<c:otherwise>
// 当所有的条件不满足时,执行的内容
</c:otherwise>
</c:choose>
注意:
1、choose标签中只能有when标签和otherwise标签,when和otherwise标签可以嵌套其他标签。
Illegal child tag in “c:choose” tag: “c:if” tag
2、choose标签和otherwise标签没有属性,而when标签必须设置test属性。
3、otherwise标签必须放在所有的when标签之后。
Illegal “c:when” after “c:otherwise” tag in “c:choose” tag
4、choose标签中至少有一个when标签,最多只能有一个otherwise标签。
Illegal “choose” without child “when” tag
5、当所有的when标签不执行时,才会执行otherwise标签。
forEach标签
1、将 body 内容重复一定的次数:
<c:forEach begin=“开始数” end=“结束数” step=“间隔数” var=“限域变量名” scope=“域范围page|request|session|application”>
//内容
</c:forEach>
2、用于迭代一个对象集合:
<c:forEach items=“要遍历的集合” var=“限域变量名(每次遍历到的成员)” varStatus=“每次遍历到的成员的相关信息”>
//内容
</c:forEach>
3、用于迭代一个Map对象:
<c:forEach items=“要遍历的Map对象” var=“限域变量名(每次遍历到的成员)item”>
键:$ {item.key } – 值:$ {item.value } < br>
</c:forEach>
格式化动作指定
1、formatNumber 标签
将数值型的数据转换成指定格式的字符串
属性:
value:
需要被格式化的数值
type:
数值型number、货币型currency、百分比类型percent
var:
用来接收格式化后的结果,若设置该属性,则不会直接输出结果,需要通过el表达式获取var的变量名
用法:
<%
request.setAttribute("num", 10);
%>
<fmt:formatNumber value="${num }" type="number" var="num1" /> ${num1 } <br>
<fmt:formatNumber value="${num }" type="number" /> <br>
<fmt:formatNumber type="currency">
${num }
</fmt:formatNumber> <br>
2、formatDate 标签
将日期类型的数据转换成指定格式的字符串
<%
request.setAttribute("myDate", new Date());
%>
<fmt:formatDate value="${myDate }" type="date"/><br>
<fmt:formatDate value="${myDate }" type="time"/><br>
<fmt:formatDate value="${myDate }" type="both"/><br>
<fmt:formatDate value="${myDate }" type="date" dateStyle="FULL"/><br>
<fmt:formatDate value="${myDate }" type="time" timeStyle="long"/><br>
<fmt:formatDate value="${myDate }" type="both" dateStyle="FULL" timeStyle="Full" /><br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd"/><br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd HH:mm:ss"/><br>
<fmt:formatDate value="${myDate }" pattern="dd/MM/yyyy"/><br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd HH:mm:ss"/><br>
3、parseNumber 标签
将指定格式的字符串转成数值型
4、parseDate 标签
将指定格式的字符串转换成日期型