EL表达式详解

一、什么是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
    EL表达式详解_第1张图片
  • 得到的值是pageContext域中的值

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

  • 编写一个jsp

    <%
        Person person = new Person();
        person.setName("张三");
        person.setPhones(new String[]{"1374231250","14345621520"});
        List list = new ArrayList();
        list.add("西安");
        list.add("南京");
        list.add("北京");
        person.setCities(list);
        Map map = new HashMap<>();
        map.put("key","value");
        map.put("key1","value1");
        person.setMap(map);
        pageContext.setAttribute("p",person);
    %>
    ${pageScope.p}
${pageScope.p.name}
${pageScope.p.phones[0]}
${pageScope.p.phones[1]}
${pageScope.p.cities}
${pageScope.p.map.key1}
  • 运行tomcat,输入对应的url
    EL表达式详解_第2张图片

四、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 map1 = new HashMap();
        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'] } 
${ requestScope.map["b+b+b"] }
${ requestScope.map['c-c-c'] }

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

变量 类型 作用
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 获取当前请求的 Cookie 信息
initParam Map 获取当前请求的 Cookie 信息
  • 获取四个域的属性
<% // 往四个域中都分别保存了数据
          pageContext.setAttribute("key", "pageContext");
          request.setAttribute("key", "request");
          session.setAttribute("key", "session");
          application.setAttribute("key", "application");
      %>
      
      ${pageScope.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
  • 运行结果如下图
    EL表达式详解_第3张图片

你可能感兴趣的:(JavaWeb)