JavaWeb开发技巧——EL、JSTL
EL表达式
用于取值,相比 JSP 语法更加简洁
${ }
可以从某个作用域中取值
<%--从 page 作用域中查找account--%> ${pageScope.account} <%--从 request 作用域中查找account--%> ${requestScope.account} <%--从 session 作用域中查找account--%> ${sessionScope.account} <%--从 application 作用域中查找account--%> ${applicationScope.account}
若不指定作用域,默认会按照作用域的范围从小到大依次查找,找到第一个为止,都找不到的话则为空
作用域从小到大:page -> request -> session -> application
JSTL
用于选择、判断、循环等操作。
JSTL有多种标签:
<%--JSTL 核心标签--%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--JSTL 格式化标签--%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%--JSTL SQL标签--%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <%--JSTL XMLb标签--%> <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> <%--JSTL 函数标签--%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
语法:前缀名: 标签
常用标签:
1、set —— 用于将值保存在指定作用域
<%-- var="变量名" value="值" scope="保存在哪个作用域(page、request、session、application)"--%> <c:set var="userName" value="zhangsan" scope="page"></c:set> <span>${userName}</span><%--配合EL表达式取值--%>
2、out —— 将结果输出
<%--取值--%> <c:out value="${userName}"></c:out>
3、remove —— 删除某个值
<%--删除userName的值--%> <c:remove var="userName"></c:remove>
4、if —— 判断
<c:if test="${age>20}"> ... </c:if>
5、choose —— 选择,类似switch方法
<c:choose> <%--符合该条件时执行--%> <c:when test="${age>20&&age<30}"> ... </c:when> <%--符合该条件时执行--%> <c:when test="${age<20}"> ... </c:when> <%--之前条件都不满足时,执行这个--%> <c:otherwise> ... </c:otherwise> </c:choose>
6、forEach —— 迭代循环遍历集合
<%--迭代标签 用于迭代集合--%> <c:forEach items="${users}" var="user"> <span>${user.name}</span>:<span>${user.age}</span> ... </c:forEach>
该标签还有一些其他属性
begin :从哪个下标开始迭代,默认值为0
end:迭代到第几个,默认值为集合的长度
step:迭代的步长
varStatus:迭代项的状态变量名,可以获取迭代项的相关状态
例:
<%--迭代标签 用于迭代集合--%> <c:forEach items="${users}" var="user" begin="2" end="6" step="2" varStatus="userStatus"> <span>${user.name}</span>:<span>${user.age}</span><br> 计数:${userStatus.count} <br> 步长:${userStatus.step} <br> 开始位置: ${userStatus.begin} <br> 结束位置:${userStatus.end} <br> 下标:${userStatus.index} <br> 是否是第一个:${userStatus.first} <br> 是否是最后一个:${userStatus.last}<br> </c:forEach>