title: 【学习之路】EL表达式学习
draft: true
tags:


EL表达式的作用

  • EL表达式的全称是:Expession Language 是表达式语言
  • EL表达式主要是代替JSP页面中的表达式脚本在JSP页面中进行数据的传输,因为EL表达式在输出时比JSP简介很多

EL表达式的格式:${表达式}

EL表达式在输出null值的时候,输出的是空串。JSP表达式输出的是null字符串

EL表达式搜索与数据的顺序

EL表达式主要是在JSP页面中输出数据,主要是输出域对象的数据。当四个域中都有相同的key的数据的时候,EL表达式会按照从小到大的顺序去进行搜索,找到就输出

  1. <body>
  2. <%
  3. request.setAttribut("key", "request");
  4. session.setAttribute("key", "session");
  5. application.setAttribute("key", "application");
  6. pageContext.setAttribute("key", "pageContext");
  7. %>
  8. ${ key }
  9. </body>

EL表达式运算符

关系运算符

关系运算符 说明
== 或 eq 等于
!= 或 ne 不等于
< 或 lt 小于
> 或 gt 大于
<= 或 le 小于等于
>= 或 ge 大于等于

逻辑运算

逻辑运算符 说明
&&或and 与运算
||或or 或运算
!或not 取反

empty运算

empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。

以下几种情况为空:

  1. 值为 null 值的时候,为空
  2. 值为空串的时候,为空
  3. 值是 Object 类型数组,长度为零的时候
  4. list 集合,元素个数为零
  5. map 集合,元素个数为零

点运算和中括号运算符

点运算,可以输出 Bean 对象中某个属性的值。中括号运算,可以输出有序集合中某个元素的值。并且中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。

  1. <body>
  2. <%
  3. Map<String,Object> map = new HashMap<String, Object>();
  4. map.put("a.a.a", "aaaValue");
  5. map.put("b+b+b", "bbbValue");
  6. map.put("c-c-c", "cccValue");
  7. request.setAttribute("map", map);
  8. %>
  9. ${ map['a.a.a'] }
  10. ${ map["b+b+b"] }
  11. ${ map['c-c-c'] }
  12. </body>

EL表达式的11个隐含对象

  • EL表达式中的11个隐含对象,是EL表达式中自己定义的,可以直接使用 | 变量 | 类型 | 作用 | | —- | —- | —- | | pageContext | PageContextImpl | 可以获取JSP中的九大内置对象 | | pageScope | Map | 可以获取pageContext域中的数据 | | requestScope | Map | 可以获取Request域中的数据 | | sessionScope | Map | 可以获取Session域中的数据 | | applicationScope | Map | 可以获取ServletContext域中的数据 | | param | Map | 可以获取请求参数的值 | | paramValues | Map | 可以获取请求参数值(多个值的时候使用) | | header | Map | 可以获取请求头的信息 | | headerValues | Map | 可以获取请求头信息(可以取多个值) | | cookie | Map | 可以获取当前请求的Cooke信息 |

还有内容没写

JSTL标签库的使用

  1. 先导入JSTL标签库的包

  2. 使用taglib指令引入标签库

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

core核心库使用

  1. <c:set/> set标签可以往域中保存数据
  1. <%--
  2. 域对象 .setAttribute(key,value);
  3. scope 属性设置保存到哪个域
  4. page 表示 PageContext 域(默认值)
  5. request 表示 Request
  6. session 表示 Session
  7. application 表示 ServletContext
  8. var 属性设置 key 是多少
  9. value 属性设置值
  10. --%>
  11. ${ sessionScope.abc } <br>
  12. <c:set scope="session" var="abc" value="abcValue"/>
  13. ${ sessionScope.abc }
  1. <c:if /> if标签用来做判断
  1. <%--
  2. <c:if></c:if> 没有eles结构
  3. --%>
  4. <c:if test="${ 1 > 2 }">
  5. <h1>1 不大于 2</h1>
  6. </c:if>
  1. . <c:choose> <c:when> <c:otherwise> 多路判断和switch…case…default接近
  1. <%--
  2. <c:choose> <c:when> <c:otherwise> 标签:
  3. 标签里不能使用 html 注释,要使用 jsp 注释
  4. when 标签的父标签一定要是 choose 标签
  5. --%>
  6. <%
  7. request.setAttribute("size", 100);
  8. %>
  9. <c:choose>
  10. <%-- 这是 html 注释 --%>
  11. <c:when test="${ requestScope.height > 190 }">
  12. <h2>大于190</h2>
  13. </c:when>
  14. <c:when test="${ requestScope.height > 180 }">
  15. <h2>大于180</h2>
  16. </c:when>
  17. <c:when test="${ requestScope.height > 170 }">
  18. <h2>大于170</h2>
  19. </c:when>
  20. <c:otherwise>
  21. <c:choose>
  22. <c:when test="${requestScope.height > 160}">
  23. <h3>大于 160</h3>
  24. </c:when>
  25. <c:when test="${requestScope.height > 150}">
  26. <h3>大于 150</h3>
  27. </c:when>
  28. <c:when test="${requestScope.height > 140}">
  29. <h3>大于 140</h3>
  30. </c:when>
  31. <c:otherwise>
  32. 其他小于 140
  33. </c:otherwise>
  34. </c:choose>
  35. </c:otherwise>
  36. </c:choose>
  1. <c:forEach /> 遍历输出
  1. <c:forEach begin="1" end="10" var="i">
  2. 第${i}行
  3. </c:forEach>