1、jstl依赖el,使用jstl需要导入jstl的jar包。jstl有四大库分别为:
core:核心库,fmt格式化(日期,数字),sql,xml
2、导入jstl标签库:首先需要导入jar包,然后在jsp页面中<%taglib prefix="前缀" uri="路径"%>(eg:1.2版本:<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>)
3、核心标签库core->通称为c标签(前缀通常为c)
(1)out和set
<c:out/>:输出
<c:out value="abc"/>输出abc;<c:out value=${num}/>与${num}相同
<c:out value=${num} default="abc"/>当${num}不存在时输出abc
<c:out value=${num} default="abc" escapeXml="false"/>当escapeXml为false时,不会转换"<"、">"。eccapeXml默认为true
<c:set/>:设置
<c:set var="num" value="abc" />在pageContext中添加key为num,value为"abc"的数据
<c:set var="num" value=${abc} scope="session" />在session中添加key为num,value为${abc}的数据,scope可选值:session、page、request、application
(2)remove
<c:remove var="a" scope="session"/>删除域变量,如果没有指定scope则从所有域中删除
(3)url
value:指定一个路径,会在路径前面自动添加项目名
<c:url value="/index.jsp" /> 实际输出为 /项目名/index.jsp
子标签:<c:param>用来给url后边添加参数
<c:url value="/index.jsp">
<c:param name="username" value="测试" />
</c:url >
实际输出为 /项目名/index.jsp?username=%7F7FWWD%9F
var:指定变量名,一旦指定了该属性那么url就不会输出到页面中而是保存到域变量中
scope:与var一起使用
(4)if
if标签的test属性必须是boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行
<c:if test="${ not empty num}">
<c:out value="${num}" />
</c:if>
(注:没有else)
(5)choose
对应switch
<c:choose>
<c:when test="${num < 10}">小于10</c:when>
<c:when test="${num > 10 && num < 20}">大于10小于20</c:when>
<c:otherwise>大于20</c:otherwise>
</c:choose>
(6)forEach
用来循环数组、集合,还可以用计数方式来循环
计数方式:
i变量从1加到100 每次加2
<c:forEach var="i" begin="1" end="100" step="2">(包含100,相当于<=100)
<c:out value="${i}">
</c:forEach>
将数组或集合中的每个元素赋值为var指定的变量
<c:forEach items="${products}" var="product">
<c:out value="${product}">
</c:forEach>
循环状态:
可以使用varStatus创建循环状态变量
<c:forEach items="${arr}" var="e" varStaus="vs">
${vs.count} (循环元素的个数)
${vs.index}(当前元素的下标)
${vs.first}(是否是第一个元素)
${vs.last}(是否是最后一个元素)
${vs.current}(当前元素)
<c:out value="${e}">
</c:forEach>
4、fmt库,格式化库
格式化日期:
<% Date date = new Date(); pageContext.setAttribute("date" , date); %>
<fmt:formatDate value="${d}" pattern="yyyy-MM-dd HH:mm:ss" />
格式化数字:
<% request.setAttribute("num" , 3.141592653) %>
<fmt:formatNumber value="${requestScope.num}" pattern="0.00">输出小数点后两位(4舍5入),补零(如果value=3.1实际会输出3.10)
<fmt:formatNumber value="${requestScope.num}" pattern="#.##">不补位