一、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表达式中,程序员可以使用一些常见的运算符和函数,以及条件语句和循环结构。