EL:Expression Language
▶ 概念:Expression Language ,即 表达式语言
▶ 作用:取代和简化jsp页面java代码的编写
▶ 语法:${表达式}
▶ 注意:jsp页面默认支持el表达式。如果要忽略el表达式,则page指令设置:isELIgnored="true"
用法:作运算 + 获取值
▶ 作运算:
- + - * /(div) %(mod) > < >= <= == != &&(and) ||(or) !(not)
- 强大的empty:用于判断字符串、数组、集合是否为null或length为0。demo:
${empty list}
,${not empty str}
▶ 获取值: el表达式只能从域对象中获取值:${域名城.键名}
域名称可选:pageScope,requestScope,sessionScope,applicationScope(顾名思义)
<%
// request域
request.setAttribute("myLoli", "Alice");
// session域
session.setAttribute("myLoli", "Cocoa");
// application域
application.setAttribute("myLoli", "Chino");
// pageContext域
pageContext.setAttribute("myLoli", "Hana");
%>
<h3>EL获取域中的数据</h3> ---------------------------------------------------------------------------------------
${requestScope.myLoli}
${sessionScope.myLoli}
${applicationScope.myLoli}
${pageScope.myLoli}
<h3>不写域名称,依次从最小的域中查找是否有该键对应的值,直到找到为止<h3> ----------------------------------------------------------
${myLoli}
<h3>对象、集合也是一样的思路<h3> ----------------------------------------------------------------------------------
${域名称.loli.name} // 这里的name不是真正的成员变量,而是getXxx方法的xxx
${域名称.list[2]} // List集合竟然可以用下标了 !
${域名称.map.key} / ${map["key"]} // Map集合竟然有两种写法获取元素 !
▶ 补充用法:获取隐式对象
el中有11个隐式对象(直接就能用),其中有个我们熟悉的pageContext对象,这个对象又可以用来获取jsp的其他八大对象
一个极其常见的用法:动态获取虚拟目录 ${pageContext.request.contextPath}
JSTL:JSP Standarded Tag Library
▶ 概念:Java Server Page Standarded Tag Library ,即JSP标准标签库
▶ 作用:取代和简化jsp页面java代码的编写
▶ 使用:导入jar包 → taglib指令引入标签库(起前缀名) → 才能使用
常用的三个标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
--------------------------------------------- if --------------------------------------------------------------
<c:if test="true">
<h1>我会被显示~</h1>
</c:if>
<c:if test="${not empty list}">
<h1>我通常与el表达式一起使用</h1>
</c:if>
--------------------------------------------- choose ----------------------------------------------------------
<c:choose> (choose相当于switch)
<c:when test="${number == 1}">星期一</c:when> (when相当于case)
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:otherwise>其他</c:otherwise> (otherwise相当于default)
</c:choose>
--------------------------------------------- forEach ---------------------------------------------------------
<c:forEach begin="1" end="9" var="i" step="2"> (相当于可设置步长的for语句)
${i}
</c:forEach>
<c:forEach items="${list}" var="li"> (相当于增强for)
${li};
</c:forEach>
<c:forEach begin="1" end="9" var="i" varStatus="s"> (varStatus称为循环状态对象)
${s.index} (下标,完全等同i。如果是增强for,则从0开始)
${s.count} (记录循环次数)
</c:forEach>
End ♬
by a Lolicon ✪