EL表达式详解

本文详细介绍了EL(Expression Language)表达式的基本概念、使用场景和核心特性。从EL的输出数据、搜索域顺序,到Bean属性的访问,再到各种运算符的运用,逐一剖析。此外,还列举了EL的11个隐含对象及其作用,并通过实例展示了如何在JSP中有效利用EL简化代码。通过本文,读者将全面掌握EL表达式的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是EL表达式

  • EL表达式的全称是:Expression Language是表达式语言
  • EL表达式主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出
  • EL表达式输出数据的时候,要比jsp的表达式脚本要简洁很多
  • EL表达式的格式:${表达式}
  • EL表达式在输出null值的时候,输出的是空串,jsp表达式脚本输出为null值的时候,输出的是null字符串

二、EL表达式搜索域数据的顺序

  • EL表达式主要是在jsp页面中输出数据

  • 主要是输出域对象中的数据

  • 当四个域都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出

 <% // 往四个域中都分别保存了数据
          pageContext.setAttribute("key", "pageContext");
          request.setAttribute("key", "request");
          session.setAttribute("key", "session");
          application.setAttribute("key", "application");
      %>
      ${key}
  • 运行tomcat
    在这里插入图片描述
  • 得到的值是pageContext域中的值

三、EL表达式输出Bean的普通属性,数组属性,List集合属性,map集合属性

  • 编写一个jsp
<body>
    <%
        Person person = new Person();
        person.setName("张三");
        person.setPhones(new String[]{"1374231250","14345621520"});
        List<String> list = new ArrayList();
        list.add("西安");
        list.add("南京");
        list.add("北京");
        person.setCities(list);
        Map<String,Object> map = new HashMap<>();
        map.put("key","value");
        map.put("key1","value1");
        person.setMap(map);
        pageContext.setAttribute("p",person);
    %>
    ${pageScope.p}<br>
    ${pageScope.p.name}<br>
    ${pageScope.p.phones[0]}<br>
    ${pageScope.p.phones[1]}<br>
    ${pageScope.p.cities}<br>
    ${pageScope.p.map.key1}<br>
</body>
  • 运行tomcat,输入对应的url
    在这里插入图片描述

四、EL表达式运算

1. 关系运算

关系运算符转义运算符说明范例结果
==eq等于${5==5}true
!=ne不等于${5!=5}false
>gt大于${2>10}false
<lt小于${3<5}true
>=ge大于等于${5>=12}false
<=le小于等于${5<=12}true

2. 逻辑运算

逻辑运算符转义运算符说明范例结果
&&and与运算${5==5 && 12>15}false
| |or或运算${5==5 | |12>15}true
!not取反运算$!true}false

3.算术运算

算术运算符说明范例结果
+加法${5+5}10
-减法${5-2}3
*乘法${2*5}10
/除法${10/5}2
%取模${111%10}1

4.empty运算

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

5. 三元运算

  • 表达式1?表达式2:表达式3
    ${12 !=12 ? value1: value2}

6. "."运算和【】中括号运算

  • .运算,可以输出bean对象中的某个属性
  • []中括号运算,还可以输出map集合中key里含有特殊字符的key的值
<%
        Map<String,Object> map1 = new HashMap<String, Object>();
        map1.put("a.a.a", "aaaValue");
        map1.put("b+b+b", "bbbValue");
        map1.put("c-c-c", "cccValue");
        request.setAttribute("map", map1);
    %>
    ${ requestScope.map['a.a.a'] } <br>
    ${ requestScope.map["b+b+b"] } <br>
    ${ requestScope.map['c-c-c'] } <br>

五、EL表达式的11个隐含对象

变量类型作用
pageContextPageContextImpl获取jsp中的九大内置对象
pageScopeMap<String,Object>获取pageContext域中的数据
requestScopeMap<String,Object>获取Request域中的数据
sessionScopeMap<String,Object>获取Session域中的对象
applicationScopeMap<String,Object>获取ServletContext域中的数据
paramMap<String,Object>获取请求参数的值
paramValuesMap<String,Object[]>它也可以获取请求参数的值,获取多个值的时候使用
headerMap<String,Object>它可以获取请求头的信息
headerValuesMap<String,Object[]>它可以获取请求头的信息,它可以获取多个值的情况
cookieMap<String,Object>获取当前请求的 Cookie 信息
initParamMap<String,Object>获取当前请求的 Cookie 信息
  • 获取四个域的属性
<% // 往四个域中都分别保存了数据
          pageContext.setAttribute("key", "pageContext");
          request.setAttribute("key", "request");
          session.setAttribute("key", "session");
          application.setAttribute("key", "application");
      %>
      
      ${pageScope.key}<br>
      ${requestScope.key}<br>
      ${sessionScope.key}<br>
      ${applicationScope.key}
  • 运行结果如下图
    在这里插入图片描述
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值