技术点10:EL表达式

JAVA学习网 2020-11-13 19:13:17

EL 表达式

一、什么是 EL 表达式,EL 表达式的作用?

  EL 表达式的全称是:Expression Language。是表达式语言。
  EL 表达式的作用:EL 表达式主要是代替 jsp 页面中的表达式脚本在 jsp 页面中进行数据的输出。
  因为 EL 表达式在输出数据的时候,要比 jsp 的表达式脚本要简洁很多。

示例如下:

 

页面效果:

 

  此时,它们输出的格式好像没什么区别。如果输出的键(key)找不到,会是什么情况呢?

 

页面效果如下:

 

  我们发现,当key找不到的时候,表达式脚本会输出null值,而EL表达式会输出空串。我们希望在页面上展示的是空串而不是null值(用户是不知道null的意思的)。

  表达式脚本怎样才能输出空串呢?

 

页面效果如下:

 

  从上面的结果来看,表达式脚本输出空串是一件非常繁琐的事情。

EL表达式的格式:

  ${表达式}

 

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

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

 

页面效果如下:

 

 

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

3.1、输出Bean的普通属性

JavaBean如下:

 

EL表达式如下:

 

效果如下:

 

3.2、输出Bean的数组属性

EL表达式如下:

 

页面效果如下:

 

3.3、输出Bean的List集合属性

EL表达式如下:

 

页面效果如下:

 

3.4、输出Bean的Map集合属性

EL表达式如下:

 

页面效果如下:

 

 

我们在Person类中添加一个getAge()方法(不用添加age属性):

 

EL表达式如下:

 

页面效果如下:

 

 

  总结:使用EL表达式输出Bean的属性时,起决定性因素的是Bean中的getXxx(),而不是具体的某个属性。就算没有这个属性,只要有对应的getXxx()方法,也可以达到同样的输出效果。

 

四、EL 表达式——运算

4.1、关系运算

 

示例:

 

效果:

 

4.2、逻辑运算

 

示例:

 

效果:

 

4.3、算数运算

 

 

 

示例:

 

效果:

 

4.4、empty运算

empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。
以下几种情况为空:
  1、值为 null 值的时候,为空
  2、值为空串的时候,为空
  3、值是 Object 类型数组,长度为零的时候
  4、list 集合,元素个数为零
  5、map 集合,元素个数为零

示例:

<body>
    <%
        //1.值为null的时候,为空
        request.setAttribute("emptyNull", null);
        //2.值为空串的时候,为空
        request.setAttribute("emptyStr", "");
        //3.值是Object类型的数组,长度为0的时候,为空
        request.setAttribute("emptyArr", new Object[]{});
        //4.List集合,元素个数为0
        List<String> list = new ArrayList<>();
//        list.add("abc");
        request.setAttribute("emptyList", list);
        //5.Map集合,元素个数为0
        Map<String, Object> map = new HashMap<>();
//        map.put("key", "value");
        request.setAttribute("emptyMap", map);
    %>
    ${ empty emptyNull } <br/>
    ${ empty emptyStr } <br/>
    ${ empty emptyArr } <br/>
    ${ empty emptyList } <br/>
    ${ empty emptyMap }
</body>

效果:

 

 

4.5、三元运算

  表达式 1?表达式 2:表达式 3
  如果表达式 1 的值为真,返回表达式 2 的值,如果表达式 1 的值为假,返回表达式 3 的值。

示例:

 

效果:

 

 

4.6、“.”点运算 和 [] 中括号运算符

① .点运算,可以输出 Bean 对象中某个属性的值。

 

效果:

 
② []中括号运算,可以输出有序集合中某个元素的值。
示例:

 

效果:

 
③ 并且[]中括号运算,还可以输出 map 集合中 key 里含有特殊字符的 key 的值。
示例:

 

效果:

 

 

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

  EL 表达式中的11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用。

 

 

 

 

5.1、EL 获取四个特定域中的属性

 

示例:

 

效果:

 

当4个域中有重复的键的时候:

 

效果:

 

如果我们要输出其它的域中的数据,怎么输出呢?

示例:

 

效果:

 

 

5.2、pageContext 对象的使用

  request.getScheme() :它可以获取请求的协议
  request.getServerName() :获取请求的服务器 ip 或域名
  request.getServerPort() :获取请求的服务器端口号
  getContextPath() :获取当前工程路径
  request.getMethod() :获取请求的方式(GET 或 POST)
  request.getRemoteHost() :获取客户端的 ip 地址
  session.getId() :获取会话的唯一标识

示例:

 

效果:

 

示例:

 

效果:

 

5.3、EL 表达式其他隐含对象的使用 

 

示例:

 

效果:

 

 

 

示例:

 

效果:

 

 

 

示例:

 

效果:

 

 

 

 

示例:

 

效果:

 

阅读(2419) 评论(0)