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

举报
TiAmoZhang 发表于 2023/02/14 13:56:40 2023/02/14
【摘要】 本文主要讲解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所示。 

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。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。