JSTL

JSTL:比EL更加强大
需要引入两个jar包:jstl.jar standard.jar
引入tablib:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
其中prefix="c":前缀

核心标签库:通用便签库、条件标签库、迭代标签库
a.通用便签库
<c:set>赋值
i:
在某个作用域(四个范围对象)之中,给某个变量赋值
<c:set var="name" value="zhangsan" scope="request"/>
<%-- 等价于
<%
request.setAttribute("name", "zhangsan");
%> --%>

<c:set var="变量名" value=“变量值" scope="4个范围对象的作用域"/>

ii:
在某个作用域(四个范围对象)之中,给某个对象的属性赋值(此种写法不能指定scope属性 )
给普通对象赋值
<c:set target="${requestScope.student}" property="sname" value="myy"/>

<c:set target="对象 " property="对象的属性" value="赋值"/>

给map赋值
<c:set target="${requestScope.map}" property="cn" value="China"/>

注意<c:set>可以给不存在的变量赋值(但不能给不存在的对象赋值)

<c:out>:显示
c:out显示不存在的数据:<c:out value="${requestScope.stu}" default="当value为空,显示的默认值"/><br/>

<a href="https://wwww.baidu.com">百度</a><br/>

true:<c:out value='<a href="https://wwww.baidu.com">百度</a>' escapeXml="true"/><br/>
false:<c:out value='<a href="https://wwww.baidu.com">百度</a>' escapeXml="false"/><br/>

<c:remove>:删除属性

<c:remove var="a" scope="request"/>

选择:
if(boolean)
单重选择
<c:if test="">

if else if... else if...else.../switch

<c:choose>
<c:when test="...">...</c:when>
<c:when test="...">...</c:when>
<c:when test="...">...</c:when>
<c:otherwise>...</c:otherwise>
</c:choose>

在使用test="" 一定要注意后面是否有空格
例如: test="${10>3 }" true
test="${10>3 }" 非true

循环(迭代标签库)
for(int i=0;i<n;i++)
<c:forEach begin="0" end="5" step="1" varStatus="status">
${status.index}
test...<br/>
</c:forEach>

for(String str:names)

<c:forEach var="name" items="${requestScope.names }">
${name }<br/>
</c:forEach>
*************<br/>
<c:forEach var="student" items="${requestScope.students}">
${student }<br/>
${student.sname }<br/>
${student.sno }<br/>
</c:forEach>

原文地址:https://www.cnblogs.com/mayouyou/p/13124473.html