EL——表达式概述、运算、内置对象

目录

  • EL表达式概述
  • EL表达式的格式和作用
  • EL表达式的运算
  • EL的内置对象
  • EL重点

EL概述

跳转到目录
EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中输 出脚本的编写。

EL表达式的格式和作用

跳转到目录

  • EL表达式的格式:${EL表达式内容}
    相当于 ${} 替代 <%%>
  • EL表达式的作用:
    1. 从域对象中查找指定的数据。
    2. 内置对象使用
    3. 执行运算符

一、从域对象中查找指定的数据
EL中提供 域对象对应的对象

域对象 EL中对应的对象
pageContext pageScope
request requestScope
session sessionScope
application applicationScope
  • 使用格式
    ${xxxScope.keyName}
    ${xxxScope["keyName"]}
    简化格式: ${keyName}
    如果keyName都相同,依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后 将不在向后寻找.

  • EL获得普通数据
    ${域名称.键名}

<div>

        <!--获取域对象中保存的数据-->
        <%=application.getAttribute("DATA_IN_APP")%>
        <%=session.getAttribute("DATA_IN_SESSION")%>
        <%=request.getAttribute("DATA_IN_REQUEST")%>

        <hr>

<%--        el的取值方式 --%>
        ${applicationScope.DATA_IN_APP}
        ${sessionScope.DATA_IN_SESSION}
        ${requestScope.DATA_IN_REQUEST}
        <hr>
        ${applicationScope["DATA_IN_APP"]}
        ${sessionScope["DATA_IN_SESSION"]}
        ${requestScope["DATA_IN_REQUEST"]}

<%--        el取值的简化方式(key的值相同时,从域对象范围最小的先获取) --%>
        <hr>
        ${DATA_IN_APP}
        ${DATA_IN_SESSION}
        ${DATA_IN_REQUEST}

</div>
  • EL获取JavaBean对象
    ${域名称.键名.属性名}
<div>
    <%-- el取值的简化方式(key的值相同时,从域对象范围最小的先获取) --%>
    <hr>
    <%-- 获取JavaBean对象 --%>
    ${USER_IN_REQUEST}
    <hr>
    <%-- 获取JavaBean对象的name属性 --%>
    ${USER_IN_REQUEST.name}
    <hr>
    ${USER_IN_REQUEST.pwd}
</div>
  • EL获取List集合对象

    ${域名称.键名[索引]}

<div>
    <%-- el取值的简化方式(key的值相同时,从域对象范围最小的先获取) --%>
    <hr>
    <%-- 获取集合对象 --%>
    ${list}
    <hr>
    <%-- 获取集合对象的元素 --%>
    ${list[0]}
    ${list[1]}
    ${list[2]}
</div>
  • EL获取Map集合对象

    ${域名称.键名.key名称}
    ${域名称.键名["key名称"]}

<div>
    <%-- el取值的简化方式(key的值相同时,从域对象范围最小的先获取) --%>
    <hr>
    <%-- 获取集合对象 --%>
    ${mapBean}
    <hr>
    <%-- 获取map集合对象的bean元素 --%>
    ${mapBean.u1}<br>
    ${mapBean.u2}<br>
    ${mapBean.u3}<br>
    ${mapBean.u4}<br>
    <%--获取集合中mapbean对象的属性--%>
    ${mapBean.u1.name}-----${mapBean.u1.pwd}<br>
    ${mapBean['u1'].name}-----${mapBean['u1'].pwd}<br>
    ${mapBean.u3.name}-----${mapBean.u3.pwd}<br>
    ${mapBean.u4.name}-----${mapBean.u4.pwd}<br>

</div>

EL表达式的运算

跳转到目录
语法:${ 运算表达式 } , EL 表达式支持如下运算符:

  • 关系运算
关系运算符 说 明 范 例 结 果
== 或 eq 等于 ${ 5 == 5 } 或 ${ 5 eq 5 } true
!= 或 ne 不等于 ${ 5 !=5 } 或 ${ 5 ne 5 } false
< 或 lt 小于 ${ 3 < 5 } 或 ${ 3 lt 5 } true
> 或 gt 大于 ${ 2 > 10 } 或 ${ 2 gt 10 } false
<= 或 le 小于等于 ${ 5 <= 12 } 或 ${ 5 le 12 } true
>= 或 ge 大于等于 ${ 3 >= 5 } 或 ${ 3 ge 5 } false
  • 逻辑运算
逻辑运算符 说 明 范 例 结 果
&& 或 and 与运算 ${ 12 == 12 && 12 < 11 } 或 ${ 12 == 12 and 12 < 11 } false
ll 或 or 或运算 ${ 12 == 12 ll 12 < 11 } 或 ${ 12 == 12 or 12 < 11 } true
! 或 not 取反运算 ${ !true } 或 ${not true } false
  • 算术运算
算术运算符 说 明 范 例 结 果
+ 加法 ${ 12 + 18 } 30
- 减法 ${ 18 - 8 } 10
* 乘法 ${ 12 * 12 } 144
/ 或div 除法 ${ 144 / 12 } 或 ${ 144 div 12 } 12
% 或mod 取模 ${ 144 % 10 } 或 ${ 144 mod 10 } 4
  • empoy运算符
    empty运算是判断一个对象或者集合是否为空。返回boolean值。
    对象为null时,返回true
    如果是空的字符串,返回true
    如果是空的Object数组(Object数组.length == 0),返回true
    空的集合,返回true
    空的map,返回true

EL的内置对象

跳转到目录

  • 获取JSP中域中的数据(pageContext,pageScope,requestScope,sessionScope,applicationScope)
  • 在Servlet中获得web应用的名称:request.getContextPath();
  • 在jsp页面上获得web应用虚拟目录()的名称:${pageContext.request.contextPath}

EL表达式重点

跳转到目录
问题1:EL表达式搜索四个域对象的顺序?

问题2:如何获取一个对象中的数组元素?

问题3:如何获取一个对象中的map中的元素?

问题4:.运算和【】运算有哪些相同和不同?

问题5:pageScope,requestScope sessionScope applicationScope param分别表示什么?

你可能感兴趣的:(JavaWeb)