Java Web 学习(9) —— EL 与 JSTL

EL 与 JSTL

EL与JSTL的作用是为了减少JSP页面中的代码。

EL

EL(Expression Language):表达式语言 常用于取值

语法

EL 表达式以${开头,以}结束。
多个表达式可以连接在一起。

<%-- a + b = 8, c + d = 10--%>
<%-- 得到 810 --%>
${a+b}${c+d}

运算符:

EL表达式可以返回任意类型的值。如果EL表达式的结果是一个带有属性的对象,则可以利用[]或者.运算符来访问该属性。[]是比较规范的形式,.运算符则比较快捷。

${beanName["propertyName"]}
${beanName.propertyName}

隐式对象

pageContext 对象表示当前JSP页面的javax.servlet.jsp.PageContext。它包含了所有其他的JSP隐式对象。

${pageContext.request}

applicationScope sessionScope requestScope pageScope 隐式对象用于获取某一范围内的值。默认情况下从小范围依次查找。

账户:<%= request.getAttribute("account") %><br/>
密码:<%= request.getAttribute("pwd") %>

<%-- 使用EL表达式取值 --%>
账户:${ requestScope.account } <br/>
密码: ${pwd}

JSTL

JSTL(JavaServer Pages Standard Tag Library):JSP 标准标签库,是一个定值标签库的集合,常用于遍历集合,条件测试,数据操作等。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

其中前缀可以任意指定。

c:out

out 将结果输出到当前页面。

<c:out value="${requestScope.name}" default="hello"/>

c:set

  • 将数据放入作用域对象中,默认放入最小作用域
  • 设置有界对象的属性
<%-- loc = request.location --%>
<c:set var="loc" value="${requestScope.location}" scope="page" />

<%-- loc 的 city 属性设置为 Harbin --%>
<c:set target="${loc}" property="city" value="Harbin" />
<c:set target="${loc}" property="city">Harbin</c:set>

c:remove

删除有界变量

<c:remove var="loc" scope="page" />

c:if

条件测试,并将结果保存在有界变量中。

<c:if test="${loc.city == 'Harbin'}" var="flag">
    Hey
</c:if>
${flag ? "Welcome to Harbin" : "Welcome"}

c:choose c:when c:otherwise

类似与 switch case default

<c:choose>
    <c:when test="${loc.city == 'Harbin' }">Welcome to Harbin</c:when>
    <c:when test="${loc.city == 'Dalian' }">Welcome to Dalian</c:when>
    <c:otherwise>Welcome</c:otherwise>
</c:choose>

c:forEach

<%-- 固定次数重复 --%>
<c:forEach var="x" begin="2" end="10" step="2">${x} </c:forEach>

<%-- 集合对象遍历 --%>
<c:forEach var="location" items="${locations}" varStatus="status">
    <c:if test="${status.first}">begin<br/></c:if>
    ${status.count} ${location.city }<br/>
    <c:if test="${status.last}">fin<br/></c:if>
</c:forEach>
属性 说明
begin 开始
end 结束
step 步长 默认1
varStatus 状态
varStatus.first 是否为第一个
varStatus.last 否为最后一个
varStatus.index 索引值(从1开始)
varStatus.count 循环次数

c:forTokens

遍历以特定分隔符分开的标识符

<c:forTokens items="this is a test" delims=" " var="word">${word}<br/></c:forTokens>
原文地址:https://www.cnblogs.com/JL916/p/11914247.html