写点什么

Java 高手速成 | EL 表达式语言

作者:TiAmo
  • 2023-02-04
    江苏
  • 本文字数:1580 字

    阅读完需:约 5 分钟

Java高手速成 | EL表达式语言

本文主要讲解 EL 表达式语言的作用、基本语法以及运算符。

01、EL 的作用

当需要在 JSP 页面显示变量以及 JavaBean 对象时,可以使用 JSP 的表达式,如<%=变量 %>的形式,也可以直接使用如<%out.println(变量)%>的 Java 输出语句。尤其当 JSP 页面从后台接收较多对参数并显示的时候,此时页面将会混杂大量的 Java 代码。JSP 作为表示层,主要负责内容的显示,如果夹杂过多的 Java 代码,不利于页面的设计与维护。

因此,在 JSP2.0 规范中增加了 EL(Expression Lanuage,表达式语言),与普通的 JSP 表达式以及 out 对象一样,EL 可以用于在 JSP 页面中进行数据的输出显示。此外 EL 还具备功能强大的运算符功能,可以进行数值以及逻辑运算,能够更为灵活地访问普通变量、JavaBean 对象以及集合。相比于 Java 代码,EL 更为直观、简洁,不仅能够减少页面的代码量,也更容易被前端设计人员所理解,方便网页的设计与维护,提高开发效率。

02、EL 基本语法

EL 的原理与 JSP 表达式的类似,都是通过 JSP 容器解释执行后,在浏览器中显示表达式的结果。EL 默认是直接在 JSP 页面中开启的,可以通过 page 指令的 isElIgonred 属性设置 JSP 页面是否能使用 EL。isElIgonred 的默认值为 false,表示开启 EL,ture 表示关闭。

EL 的语法格式为 ${Expression}。其中,花括号{}里面的表达式可以使用各种运算符,以方便地显示各类数据。假设通过 Servlet 处理完业务流程后,返回一个商品 goods 的 JavaBean 对象,跳转到 JSP 页面中显示其商品名称,需要使用如下 Java 代码。

Goods goods=(Goods)request.getAttribute("goods");String gname=goods. getGname();out.println("gname");
复制代码

 而如果使用 EL,只需要代码如下:

${requestScope.goods.gname}
复制代码

很显然,使用 EL 要更加简洁,同时也很容易被理解。

03、EL 定义的基本运算符

为了更好地进行数据的读取,EL 定义了存取、算数、关系、逻辑、条件、empty 等运算符,本文将对这些运算符的使用方法进行介绍。

1. .和[]存取运算符

EL 可以使用两种数据读取的运算符:.(点运算符)和[]。第一节使用.运算符对商品名称进行读取,在这里也可以使用[]运算符进行读取。编写代码如下所示。

${requestScope.goods["gname"]}
复制代码

下面 3 种情况必须使用[]运算符,而不能使用.运算符。

(1) 属性名称中包含特殊字符的情况。

特殊字符包括数字、横线、下画线等,此时只能使用[]运算符。例如,假设 goods 有一个属性名称为 goods_count,其代码就只能写成如下形式。

${requestScope.goods["goods_count"]}
复制代码

(2) 属性名称为动态取值的情况。

如果属性名称中包含变量时,就只能使用[]运算符。例如:

String attribute;//attribute可能取值"gname","gprice"或者"gid"${requestScope.goods[attribute]}
复制代码

(3) 获取数组中的元素的情况。

 假设使用以下语句将定义的数组保存到 request 中。

String goodsArray[]={"小米10","华为P30","红米K30Pro"};request.setAttribute("goodsArray",goodsArray);
复制代码

那么,在 JSP 页面中只能通过[]运算符依次读取数组中的各元素。

${requestScope. goodsArray [0]}${requestScope. goodsArray [1]}${requestScope. goodsArray [2]}
复制代码

2. 算数运算符

EL 定义的算数运算符如表 1 所示。算数运算符可以进行一些简单的运算比较,进而帮助实现逻辑判断功能。

■ 表 1EL 定义的算数运算符


3. 关系运算符

EL 定义的关系运算符如表 2 所示。

■ 表 2EL 定义的关系运算符


在使用两个变量进行关系运算比较时,应采用 ${变量 1==变量 2}的形式,而不是 ${变量 1}=${变量 2}。

4. 逻辑运算符

EL 定义的逻辑运算符如表 3 所示。

■ 表 3EL 定义的逻辑运算符


5. 条件运算符

条件运算符的基本语法为 ${A?B:C},表示当满足条件 A 时,表达式的值为 B;否则,表达式的值为 C。例如 ${2>5?1:0}的值为 0。

6. empty 运算符

empty 运算符用于判断数据是否为空,语法格式如下:

${empty A}

empty 运算符的规则:当 A 的值为 null,或者 A 不存在,或者 A 为空字符串,或者 A 为空数组时,均返回为 true;否则返回 false。


发布于: 刚刚阅读数: 3
用户头像

TiAmo

关注

有能力爱自己,有余力爱别人! 2022-06-16 加入

CSDN全栈领域优质创作者;阿里云创作者社区专家博主、技术博主、星级博主、阿里云ACE;华为云享专家;

评论

发布
暂无评论
Java高手速成 | EL表达式语言_Java_TiAmo_InfoQ写作社区