JSTL(JavaServer Pages Standard Tag Library,JSP)标准标记库
JSTL引入了expression language(EL表达式)
使用JSTL需要标签导入
<!-- taglib指令引入外部标记库 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 函数库 -->
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:if>
<c:if test="${... }">
add some html
</c:if>
//没有else结构,所以只能一个if一个if的写。
<c:choose>
<c:choose>
<c:when test="${...}">
do some html
</c:when>
<c:when test="${... }">
do some html
</c:when>
<c:otherwise>
do some html
</c:otherwise>
</c:choose>
//和java中switch语句类似
<c:set>
<c:set var="name" value="value"></c:set>
//设置或修改变量
<c:foreach>
//for循环
<c:forEach items="${...List }" var="v" varStatus="vs">
//v就是对象
//vs.count,vs.index...
do some html...
</c:forEach>
EL表达式
<!-- el表达式 -->
<!-- 1.获取作用域中的数据
根据数据名获取
从pageContext->request->session->application顺序获取数据
如果找到则不会继续查找
-->
${error}
<!-- 指定作用域获取数据 pageScope requestScope sessionScope applicationScope -->
${requestScope.error }
${sessionScope.error }
<!-- 2.获取对象的属性 对象.属性名 get/set-->
${sessionScope.user.account }
${sessionScope.user.password }
${user.name }
<!-- 3.获取map中的数据 根据键获取值 -->
${map.key }
${map.keyObj.attr }
//用<c:foreach>遍历Map
<c:foreach items="${...Map}" var="obj">
${obj.key }
${obj.value}
</c:foreach>
<!-- 4.运算符 运算式子放在el表达式里面
算术运算: + - * / %
关系运算: == != > < >= <=
逻辑运算: && || !
三目运算 ?:
-->
${number+1}
${number%2==0 }
${number%2==0?'偶数':'奇数' }
<!-- 5.是否为空的判断 empty -->
${empty ... }
${not empty ... }
<!-- 6.数组操作 -->
${array[0] }