您的位置:

Java EL表达式:语法、用法、示例详解

一、EL表达式的概念

EL(表达式语言)是一种用于在JSP中嵌入JavaBeans属性的小型控制器语言。它允许开发人员将值从JavaBeans和其他数据源中检索和设置,因此在JSP中添加可重用的代码和分离显示逻辑和业务逻辑变得更加容易。

使用EL表达式,您可以从请求中检索参数或头文件,与JavaBeans中的属性一起,检索Cookies值,并将部分请求URI发送到页面,以用于类似大小控制等的逻辑判断。您还可以在HTML表格中间隔或设置具有不同剪贴板(断言)的复选框。

EL表达式允许在JSP体中嵌入JavaBean的属性实现,简化了JSP页面和JavaBean模型之间的通信。因此,它可以减少代码的编写量,并简化程序的设计和维护流程。

二、EL表达式语法

语法结构:${expression}

expression必须是一种合法的Java表达式,其中可以包含以下任意组合

  • 对象名称——要从中检索属性或方法的JavaBeans名称,如${owner.name}。名称不区分大小写,只要JavaBeans名称和属性名称的拼写完全匹配即可。
  • 属性名称——要检索的JavaBean属性的名称,如${bean.size}。名称不区分大小写。
  • 索引或映射键——用于访问数组,数组列表或映射条目的索引或键,如${list[3]}或${map['key']}。
  • 点和括号表示法——用于访问基本数据类型和方法的名称。

三、EL表达式的使用

EL表达式主要用在JSP页面中,配合JavaBean使用。

假设存在一个名为user的JavaBean,有两个属性:name和gender

  User user = new User();
  user.setGender("male");
  user.setName("Tom");

在JSP页面中,通过以下方式展示用户信息:

  

用户名:${user.name}, 性别:${user.gender}

该代码将JavaBean中的属性值插入到JSP文本中,最终效果为:用户名:Tom, 性别:male。

四、EL表达式中的运算符

在EL表达式中,提供了${}里对象的一些运算符供程序员使用,例如常见的+,-,*,/等算术运算符和==,!=,<,>,<=,≥等关系运算符。

下面是一些常见的示例:

  

${num1 + num2}

${num1 - num2}

${num1 * num2}

${num1 / num2}

${str1 == str2}

${str1 != str2}

${num1 <= num2}

${num1 >= num2}

五、EL表达式中的常用函数

EL表达式中提供了用于集合操作、字符串处理和日期格式化等常见任务的许多常用函数。

下面是一些常见的示例:

  

${empty list}:如果列表为空,则返回true,否则返回false。

${not empty list}:如果列表不为空,则返回true,否则返回false。

${fn:length(list)}:返回列表的长度。

${fn:indexOf(list,'key')}:返回列表中第一个匹配项的索引。

${fn:substring(string,0,5)}:返回从0到第5个位置的字符串子串。

${fn:toLowerCase(string)}:将字符串转换为小写。

${fn:toUpperCase(string)}:将字符串转换为大写。

${fn:replace(string,'old','new')}:用新字符串替换字符串的一个旧文本。

六、EL表达式中的条件语句和循环结构

EL表达式也允许程序员使用条件语句和循环结构,例如if, switch, for, foreach等语句。这些结构可以嵌套到${}标记中,并与JavaBeans一起使用,从而使应用程序拥有更深层次的逻辑控制。

下面是一些代码示例:

  

${user.gender == 'male' ? '先生' : '女士'}

${user.name.startsWith('T') ? 'Yes' : 'No'}

${user.age >= 18 ? '成年人' : '未成年人'}

${fn:length(list) > 5 ? 'There are more than 5 elements' : 'There are less than 5 elements'}

${fn:replace(str,'old','new') ne null ? fn:replace(str,'old','new') : 'N/A'}

<c:if test="${flag == true}"> <c:out value="Hello, World!"/> </c:if>

<c:foreach var="item" items="${list}"> <c:out value="${item}"/> </c:foreach>

七、总结

EL表达式是一种专门为JSP页面设计的小型控制器语言。它可以极大地简化JSP页面的设计,减少重复的代码编写,提高代码的可读性和可维护性,同时提高了JavaBean和JSP页面之间的通信效率。在EL表达式中,程序员可以使用一些常见的运算符和函数,以及条件语句和循环结构。