JSP中EL表达式用法_动力节点Java学院整理
发布时间 - 2026-01-11 02:23:45 点击率:次JSP页面中支持使用EL表达式,EL全名为Expression Language。EL表达式的主要作用有:

① 获取数据;
② 执行运算;
③ 使用EL表达式的11大隐式对象;
④ 调用Java方法。
当然,EL表达式还能配合JSTL标签,进行其他一些功能的显示,例如迭代等等。
我们先来看使用EL表达式来获取数据
在JSP页面中使用${标识符}的形式,就是通知JSP引擎在Servlet中调用pageContext.findAttribute(“标识符”)来获取数据,具体是以标识符作为关键字从各个域中来寻找对象或属性。如果找到,则以字符串形式返回显示在JSP页面上,如果没找到则以空字符串””显示,这一点跟<jsp:getProperty>标签不一样,也说明了EL表达式比这个标签要好用。
例1:获取域中的普通数据
<%
String name = "Ding";
request.setAttribute("personName", name);
%>
${personName }
浏览器中观察:
例2:获取域中的对象或属性
<%
Person p = new Person("Ding",25);
request.setAttribute("person", p);
%>
${person } <br>
${person.name } <br>
浏览器中观察:
例3:获取对象中的对象的属性
在domain包中的两个JavaBean:
public class Person {
private String name;
private int age;
private Address address;
。。。省略各个属性的get和set方法
}
public class Address {
private String city;
。。。省略city属性的get和set方法
}
在JSP页面中代码为:
<%
Person p = new Person();
Address a = new Address();
a.setCity("Amoy");
p.setAddress(a);
request.setAttribute("person", p);
%>
${person.address.city }
在浏览器中观察:
注意:这种对象中属性还是对象的,要特别注意属性的名称一定在JSP上表现一致,否则会抛出异常。
例3-2:在web工程中使用EL表达式来获取当前web工程路径
${pageContext.request.contextPath}
该EL表达式的值为:
注意,该表达式显示的最前面就已经有一个斜杠了”/”。这里在EL表达式中的“pageContext”是EL中的一个隐式对象,具体请看下一篇博客。
例4:取出List集合中的元素
<%
List<Person> personList = new ArrayList<Person>();
personList.add(new Person("Ding",25));
personList.add(new Person("LRR",24));
request.setAttribute("persons",personList);
%>
${persons[0].name } love ${persons[1].name}
浏览器中观察:
例5:取出Map集合中的元素
<%
Map<String,Person> personMap = new HashMap<String,Person>();
personMap.put("p1",new Person("Ding",25));
personMap.put("p2",new Person("LRR",24));
request.setAttribute("pMap", personMap);
%>
${pMap.p1.name } <br>
love <br>
${pMap['p2'].name }
在浏览器中观察:
可以看到除了用”.”来取得属性或者Map集合中key对应的值,还可以使用”[‘标识符']”来获取(注意中括号中有单引号),这个尤其在标识符为数字的情况下,使用”.”会报错,而使用”[‘标识符']”则不会报错。
注意,EL表达式能获取对象的属性是因为该对象中的字段提供了get方法,所以成为了属性,EL仅能获取对象的属性,而不能获取对象的字段,这一点要明确。
EL表达式的不足:无论是从List集合还是从Map集合中,都无法使用EL表达式来迭代集合,因此如果需要迭代集合,需要EL表达式配合JSTL标签使用。
EL表达式支持运算,不管是算术运算、逻辑运算还是关系运算:
语法:${运算表达式}
(此处省略算术运算符)
例6:
<%
request.setAttribute("username", "root");
request.setAttribute("password", "123");
%>
${username == "root" && password == "123" }
浏览器上显示:true。
除了上述三种简单的运算符外,EL表达式还支持 empty运算符和二元表达式(表达式?值1:值2)
empty运算符:检测对象是否为null或某数据是否为””空字符串
例7:
<%
request.setAttribute("person", null);
request.setAttribute("address", "");
request.setAttribute("user", new User());
%>
${empty(person)} <br>
${empty(address)} <br>
${empty(user)} <br>
浏览器中观察:
二元表达式:
例8:
<%
User user = new User();
user.setUsername("fjdingsd");
pageContext.setAttribute("user", user);
%>
欢迎您:${user!=null ? user.username : '' }
浏览器中观察:
上面这个例子使用EL表达式的二元表达式,如果user对象不为null,则输出该对象中的username属性,否则输出空字符。
二元表达式的另一种用途还可以用来做数据回显,假设有一个用户要修改其注册信息,那么服务器(或从数据库)在返回其数据到显示页面时,应该在他编辑过的信息重新显示出来。
例9:
<%
request.setAttribute("gender", "female");
%>
<input type="radio" name="gender" value="male" ${gender=='male'?'checked':'' }>男
<input type="radio" name="gender" value="female" ${gender=='female'?'checked':'' }>女
浏览器中显示:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# JSP
# EL
# 表达式
# El表达式使用问题javax.el.ELException:Failed to parse the
# EL表达式简介_动力节点Java学院整理
# EL表达式的隐式对象_动力节点Java学院整理
# 浅谈java里的EL表达式在JSP中不能解析的问题
# JAVA JSP页面技术之EL表达式整理归纳总结
# Javaweb El表达式实例详解
# Java后端用EL表达式改进JSP
# 器中
# 象中
# 运算符
# 是从
# 迭代
# 报错
# 则以
# 有一个
# 是因为
# 在他
# 还可以
# 隐式
# 欢迎您
# 还能
# 可以用
# 中有
# 空字符串
# 可以看到
# 三种
# 不为
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
iOS UIView常见属性方法小结
如何用搬瓦工VPS快速搭建个人网站?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
EditPlus中的正则表达式 实战(2)
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
JavaScript如何实现继承_有哪些常用方法
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Python正则表达式进阶教程_复杂匹配与分组替换解析
JS实现鼠标移上去显示图片或微信二维码
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
5种Android数据存储方式汇总
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何用狗爹虚拟主机快速搭建网站?
微信小程序 配置文件详细介绍
轻松掌握MySQL函数中的last_insert_id()
Laravel如何实现用户密码重置功能?(完整流程代码)
如何在景安服务器上快速搭建个人网站?
Laravel怎么在Controller之外的地方验证数据
如何在云服务器上快速搭建个人网站?
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
如何快速搭建二级域名独立网站?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
个人网站制作流程图片大全,个人网站如何注销?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
高防服务器如何保障网站安全无虞?
北京网站制作的公司有哪些,北京白云观官方网站?
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
历史网站制作软件,华为如何找回被删除的网站?
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel中的Facade(门面)到底是什么原理
Laravel如何发送系统通知?(Notification渠道示例)
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
python中快速进行多个字符替换的方法小结
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何快速重置建站主机并恢复默认配置?
Laravel Session怎么存储_Laravel Session驱动配置详解
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
PHP正则匹配日期和时间(时间戳转换)的实例代码
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
大连 网站制作,大连天途有线官网?
如何基于PHP生成高效IDC网络公司建站源码?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧

