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>
posted on 2020-10-14 16:10  pjhhh  阅读(66)  评论(0编辑  收藏  举报