JSTL核心库
set标签
向域中设置数据
<c:set> </c:set>
举例
<body>
${requestScope.key}<br/>
<c:set scope="request" var="key" value="通过set标签设置的值"/>
${requestScope.key}<br/>
</body>
使用注意:
使用set标签时 scope属性代表域对象 var属性代表key键 value代表value值
对于scope
page:pageContext(默认)
request:request
session:session
application:servletContext
if标签
条件判断输出
<c:if test=""> </c:if>
举例
<c:if test="${5>0}">结果为真时输出</c:if>
使用注意:
test属性中填写EL的条件判断表达式,结果为真输出if标签包围的内容,结果为假不做输出,只有if没有else
choose when otherwise 标签
多路判断
<c:choose>
<c:when test="">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
举例:
<% request.setAttribute("salary",15000); %>
<c:choose>
<c:when test="${salary>30000}">
给的很多
</c:when>
<c:when test="${salary>=15000}">
还可以
</c:when>
<c:when test="${salary>10000}">
正常
</c:when>
<c:otherwise>
给的比较少
</c:otherwise>
</c:choose>
使用注意:
when中的test属性代表EL条件判断语句,若条件为真输出包围的内容,且之后的判断停止,否则一直判断,类似于switch case
如果choose中需要使用注释,需要使用jsp的注释,其他类型的注释会报错
otherwise同一级只能使用一个,如果想在otherwise中继续使用otherwise,需要写when,否则无法使用即同一级中若需要使用otherwise就必须使用when
foreach标签
遍历标签
<c:forEach begin="" end="" var=""> </c:forEach>
举例
遍历数字:
<c:forEach begin="1" end="10" var="i">
${i}<br/>
</c:forEach>
遍历对象数组:
<%
request.setAttribute("array",new String[]{"a","b","c"});
%>
<c:forEach items="${requestScope.array}" var="item">
${item}<br/>
</c:forEach>
遍历Map:
<%
Map<String,String> map = new HashMap<>();
map.put("经理","张三");
map.put("副经理","李四");
map.put("员工","王五");
request.setAttribute("map",map);
%>
<c:forEach items="${ requestScope.map }" var="entry">
${entry}
${entry.key}
${entry.value}
<br/>
</c:forEach>
遍历list:
<%
List<String> list = new ArrayList();
list.add("1-1");
list.add("1-2");
list.add("1-3");
list.add("1-4");
list.add("1-5");
request.setAttribute("list",list);
%>
<c:forEach items="${ requestScope.list }" var="listitem">
${listitem}<br/>
</c:forEach>
使用注意:
其中的begin属性代表启示值,end属性代表结束值,step属性代表步长,var属性代表每次循环的赋值目标,例如for循环中的i
如果不写begin和end用来遍历数组或集合,类似于增强for循环foreach,items属性代表迭代的目标,var属性代表赋值目标与上类似