今天回顾一下JSTL的一些小知识吧.
JSTL是 JSP的标准标签库,是一个定制标签类库的集合.
JSTL是使用
1.将jstl相关的jar包拷贝到项目的lib目录下
jstl.jar和standard.jar
2.在页面引入想要使用的库
<%@taglib uri=“要使用的库的路径” prefix=“前缀名” %>
3.使用标签
<前缀名:标签名 属性名=“属性值”></前缀名:标签名>
4.标签一般通过el表达式操作域对象
if标签
有两种形式
1、有主体内容
<c:if test="判断条件,返回true或false" var="限域变量名,用户接收判断条件的返回值" scope="限域变量名的域范围 page|request|session|application">
// 当满足条件时,执行的代码
</c:if>
2、无主体内容
<c:if test="判断条件,返回true或false" var="限域变量名,用户接收判断条件的返回值" scope="限域变量名的域范围 page|request|session|application">
</c:if>
<%
request.setAttribute("num", 10);
%>
<c:if test="${num > 1 }" var="flag" scope="request">
<h2>Hello JSTL</h2>
</c:if>
获取限域变量中的值:${requestScope.flag }
<hr>
<c:if test="${1==1 }" var="flag1"></c:if> ${flag1 } <br>
<c:if test="${1=='1' }" var="flag2"></c:if> ${flag2 } <br>
<c:if test="${'1'=='1' }" var="flag3"></c:if> ${flag3 } <br>
<c:if test="${'1==1' }" var="flag4"></c:if> ${flag4 } <br>
<c:if test="1==1" var="flag5"></c:if> ${flag5 } <br>
<c:if test="${num == 10 }" var="flag6"></c:if> ${flag6 } <br>
<c:if test="true" var="flag7"></c:if> ${flag7 } <br>
<hr>
<c:if test="${num >1 }">
<h2>Hello</h2>
</c:if>
<c:if test="${num <=1 }">
<h2>Hi</h2>
</c:if>
choose、when、otherwise标签
相当于Java中的switch
语法:
<c:choose>
<c:when test="返回boolean类型的判断条件">
// 满足条件执行的代码
</c:when>
...
<c:otherwise>
// 当所有的when不执行时执行的代码
</c:otherwise>
</c:choose>
注:
1、choose标签与otherwise标签没有属性,when标签必须设置test属性
2、choose标签中只能包含when标签与otherwise标签,when标签与otherwise标签可以包含其它标签
Illegal "c:if" after "c:otherwise" tag in "c:choose" tag.
3、choose标签中至少包含一个when标签,最多只有一个otherwise标签
Illegal "choose" without child "when" tag
4、所有的when标签必须设置在otherwise标签之前
Illegal "c:when" after "c:otherwise" tag in "c:choose" tag.
5、所有的when标签不执行的情况下才会执行otherwise标签
<%
request.setAttribute("num", 90);
%>
<c:choose>
<c:when test="${num <60 }">
<h4>你个渣渣!</h4>
</c:when>
<c:when test="${num >= 60 && num < 80 }">
<h4>哎哟不错哦!</h4>
</c:when>
<c:otherwise>
<h4>你很棒棒哦!</h4>
</c:otherwise>
</c:choose>
forEach标签
循环内容多次
语法:
<c:forEach begin="开始循环的数" end="结束循环的饿数" var="当前成员的限域变量名" step="循环的间隔数">
</c:forEach>
格式化动作指令
formatNumber标签
将数值型的数据转换成指定格式的字符串
有主体内容
<fmt:formatNumber type="" var="" >
主体内容
</fmt:formatNumber>
无主体内容:
<fmt:formatNumber type="" var="" value="" />
常用属性
type:要格式化成的类型
number数值型,默认值
percent百分比类型
currency货币型
var:限域变量名,用来接收格化式后的结果,如果不设置该属性,则结果会直接输出;如果设置了,则需要通过el表达式输出限域变量名的值
value:要格式化的数据,与有主体内容的格式主体相同
formatDate标签
将日期型的数据转换成指定格式的字符串
<fmt:formatDate value="" var="" type="" dateStyle="" timeStyle="" pattern=""/>
常用属性
value:要格式化的数据
type:要格式化成的类型
日期型(默认)、时间型、日期+时间型
dateStyle:日期型的格式
timeStyle:时间型的格式
pattern:具体的格式
parseNumber标签
将指定格式的字符串转换成数值型数据
type:当前字符串的格式
number数值型,默认值
percent百分比类型
currency货币型
parseDate标签
将指定格式的字符串转换成日期型
type:当前字符串的格式
date、time、both
pattern:与当前字符串对应的格式
<%
request.setAttribute("num", 10);
%>
<fmt:formatNumber>
${num }
</fmt:formatNumber>
<br>
<fmt:formatNumber value="${num}" />
<br>
<fmt:formatNumber value="${num }" type="percent" />
<br>
<fmt:formatNumber value="${num }" type="currency" var="n" /> ${n }
<!-- 设置区域 -->
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${num }" type="currency" />
<hr>
<%
request.setAttribute("myDate", new Date());
%>
<fmt:formatDate value="${myDate }"/><br>
<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="both" dateStyle="FULL"/><br>
<fmt:formatDate value="${myDate }" type="both" dateStyle="long"/><br>
<fmt:formatDate value="${myDate }" type="both" dateStyle="FULL" timeStyle="full"/><br><br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd HH:mm:ss"/><br>
<fmt:formatDate value="${myDate }" pattern="MM-dd-yyyy HH:mm:ss"/><br>
<fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd HH:mm:ss" var="date1"/>${date1 }<br>
<hr>
<fmt:parseNumber type="number">
10
</fmt:parseNumber>
<br>
<fmt:parseNumber value="10%" type="percent" /> <br>
<fmt:setLocale value="zh_cn"/>
<fmt:parseNumber value="¥10.00" type="currency" />
<hr>
<%
request.setAttribute("mydate", "2018-11-23");
%>
<fmt:parseDate value="${mydate }" /> <br>
<fmt:parseDate value="11:23:45" type="time" /><br>
<fmt:parseDate value="2018-11-23 11:23:45" type="both" /><br>
<fmt:parseDate value="11-01-2018 10:24" pattern="MM-dd-yyyy HH:mm" />