JSTL
比EL的功能更强大
需要引入两个jar包
1、jstl.jar
2、standard.jar
引入tablib
<!-- taglib引入库,prefix添加前缀 -->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
核心标签库:通用标签库、条件标签库、迭代标签库
通用标签库
<指定前缀(prefix):set>:赋值
有以下作用:
i、在某个作用域(4个范围对象)中给变量赋值
<%
// request.setAttribute("name", "ZhangSan"); 这句java代码和下面jstl代码起到的作用完全一致
%>
<c:set var="name" value="ZhangSan" scope="request"/>
<!-- 变量名 变量值 作用域 -->
${requestScope.name}
ii、在某个作用域之中(4个范围对象),给某个对象的属性赋值
<c:set target="${requestScope.student}" property="sname" value="zxs"/><br>
<!-- 目标修改对象 要修改的变量 修改值 -->
<!-- 注意:对象赋值无需规定范围,因为范围在设置目标对象时已经确定了 -->
此种方法可以给普通对象赋值,也可以给Map对象赋值
<c:set target="${requestScope.map}" property="cn" value="中华人民共和国"/>
注意可以给不存在的值赋值,但是不能给不存在的对象赋值
<指定前缀(prefix):out>:显示
JSTL的显示功能比EL(${ })要强大之处在于:
c:out在显示不存在的数据时,会自动调用自定义的默认值
传统EL:${requestScope.student.sname}<br>
cout方式:<c:out value="${requestScope.student.sname}"/><br>
c:out显示不存在的数据:<c:out value="${requestScope.s }" default="不存在"/><br>
此外,c:out还有一个escape属性,当value属性值为超链接时,escape=true,显示超链接,escape为false,只显示字段
escapeXml=true:<c:out value='<a href="http://baidu.com">百度</a><br>' escapeXml="true"/><br>
escapeXml=false:<c:out value='<a href="http://baidu.com">百度</a><br>' escapeXml="false"/><br>
c:remove
删除属性
=====c:remove=====<br>
<c:set var="a" value="b" scope="request"/>
删除前显示:${requestScope.a}<br>
<c:remove var="a" scope="request"/>
删除后显示:${requestScope.a}<br>
JSTL选择语法
单重选择
<c:if test="">
注意:用来选择的条件全都用EL包裹写在JSTL中
<c:if test="${10<2}" var="result" scope="request">
<!--var中存放结果集,scope中指定结果集存放范围-->
选择内容
</c:if>
多重选择
类似于switch选择结构
<c:choose>
<c:when test=""></c:when>
<c:when test=""></c:when>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
</c:choose>
JSTL迭代标签
普通迭代
<c:forEach begin=“初始值” end=“结束值” step=“步长”>
<c:forEach begin="0" end="5" step="1" varStatus="status">
<!-- varStatus:用于放属性值 ,有index(当前下标)-->
${status.index}-
test<br>
</c:forEach>
遍历数组或集合
需要添加属性var和items
<c:forEach var="name" items="${requestScope.names}" varStatus="status">
<!-- var表示每一次用于承接数组元素的容器,items为被遍历的数组对象 -->
${status.index}-${name}<br>
</c:forEach>