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 代码。
而如果使用 EL,只需要代码如下:
很显然,使用 EL 要更加简洁,同时也很容易被理解。
03、EL 定义的基本运算符
为了更好地进行数据的读取,EL 定义了存取、算数、关系、逻辑、条件、empty 等运算符,本文将对这些运算符的使用方法进行介绍。
1. .和[]存取运算符
EL 可以使用两种数据读取的运算符:.(点运算符)和[]。第一节使用.运算符对商品名称进行读取,在这里也可以使用[]运算符进行读取。编写代码如下所示。
下面 3 种情况必须使用[]运算符,而不能使用.运算符。
(1) 属性名称中包含特殊字符的情况。
特殊字符包括数字、横线、下画线等,此时只能使用[]运算符。例如,假设 goods 有一个属性名称为 goods_count,其代码就只能写成如下形式。
(2) 属性名称为动态取值的情况。
如果属性名称中包含变量时,就只能使用[]运算符。例如:
(3) 获取数组中的元素的情况。
假设使用以下语句将定义的数组保存到 request 中。
那么,在 JSP 页面中只能通过[]运算符依次读取数组中的各元素。
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。
版权声明: 本文为 InfoQ 作者【TiAmo】的原创文章。
原文链接:【http://xie.infoq.cn/article/71f7cb4355a6d8a2cff4d3ab2】。文章转载请联系作者。
评论