本文已参与「新人创作礼」活动,一起开启掘金创作之路。
JSTL
JSTL(JSP Standard Tag Library),是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换JSP中的表达式脚本,而标签库是为了替换代码脚本。这样使整个JSP页面变得更加简洁。
| 功能范围 | URI | 前缀 |
|---|---|---|
| 核心标签库 | java.sum.com/jsp/jstl/co… | c |
| 格式化 | java.sum.com/jsp/jstl/fm… | fmt |
| 函数 | java.sum.com/jsp/jstl/fu… | fn |
| 数据库(不使用) | java.sum.com/jsp/jstl/sq… | sql |
| XML(不使用) | java.sum.com/jsp/jstl/xm… | x |
//在jsp标签库中使用taglib指令引入标签库
//CORE标签库
<%@ taglib prefix="c" uri="http://java.sum.com/jsp/jstl/core" %>
//XML标签库
<%@ taglib prefix="x" uri="http://java.sum.com/jsp/jstl/xml" %>
//FML标签库
<%@ taglib prefix="fmt" uri="http://java.sum.com/jsp/jstl/fmt" %>
//SQL标签库
<%@ taglib prefix="sql" uri="http://java.sum.com/jsp/jstl/sql" %>
//FUNCTIONS标签库
<%@ taglib prefix="fn" uri="http://java.sum.com/jsp/jstl/functions" %>
使用步骤
- 先导入jstl标签库的jar包
- 使用taglib指令引入标签库
CORE核心库使用
-
<c:set scope="域" var="key" value="value">:往域中保存数据 格式:域对象.setAttribute(key,value); scope属性设置保存到哪个域,page为默认
-
<c:if test="${12 != 0}"/> :if判断
test属性表示判断的条件(使用EL表达式输出) 不支持if-else
-
<c:choose> <c:when> <c:otherwise>标签:多路判断,跟switch...case...defalt非常接近 使用格式:
<c:choose> <c:when test="${ requestScope.height > 190}"> <h2>小巨人</h2> </c:when> <c:when test="${ requestScope.height > 180}"> <h2>很高</h2> </c:when> <c:when test="${ requestScope.height > 170}"> <h2>还可以</h2> </c:when> <c:otherwise> <h2>剩下小于170的情况</h2> </c:otherwise> </c:choose>注意:
标签中不能使用html注释
when标签的父标签一定要是choose标签
-
<c:forEach/>:遍历输出使用。
//遍历输出1到10
<c:forEach begin="1" end="100" var="i">
${ i }
</c:forEach>
//遍历数组,原理和for(Object i:arr)一样
<c:forEach items="${ requestScope.arr}" var="i">
${ i }
</c:forEach>
//遍历Map集合,entry里放的是键值对
<c:forEach items="${requestScope.map}" var="entry">
<h1>
${entry.key}
${entry.value}
</h1>
</c:forEach>
//遍历List集合,var中是对应的每一个对象
<c:forEach items="${requestScope.stus}" var="stu">
${stu.id}
${stu.username}
</c:forEach>
//组合使用
<c:forEach begin="2" end="7" step="2" varStatus="status" item="${requestScope.stus}" var="stu">
${stu.id}
${stu.username}
${stu.password}
${stu.age}
${stu.phone}
${status.last}
</c:forEach>
status各属性: