EL表达式学习笔记

本文详细解释了EL表达式在JSP页面中如何获取和操作数据,包括基本使用、运算符支持及复杂数据结构的遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你将一个字符串放进request里面,如果我们用jsp的知识来在前台取的数据,如下所示:

<%= request.getAttribute("hello") %>

但如果用EL表达式的话,就可以写成下面的样子:

${hello }

说明一下:

el表达式的隐含对象为pageScope, requestScope, sessionScope, applicationScope

如果未指定scope,它的搜索顺序为:pageScope~applicationScope,当然我们可以显式的指定EL表达式的scope:

${requestScope.hello }

假设我们把一个user对象扔进request,user对象包含username, age等信息,我们怎么取出该对象的username和age信息呢:

${user.username }
${user.age }

注意:user对象应该提供getUserName()和getAge()方法,因为EL表达式其实是调用类似的方法来取得相应的内容。


现在假设后台是把一个map对象扔进了request里面,代码如下:

Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

request.setAttribute("map", map);

那么如何在前台取得key1和key2对应的值呢?可以用下面的方法:

${map.key1 }
${map.key2 }

但是如果后台现在你不知道传回多少数据,需要遍历的话,EL表达式是完成不了的,这就需要配合JSTL表达式来完成,后面将会讲解


假设现在后台中是一个字符串数组:

String[] arr = {"a", "b", "c"};

request.setAttribute("arr", arr);

则前台是这样来获得第二个元素:

${arr[1] }

但如果是对象数组,例如是10个user对象的数组,我们现在来取得第二个user对象的姓名:

${arr[1].username }

如果是List容器,取法跟数组一样:

${arr[1].username }

EL表达式对运算符的支持:

假设要计算1+2 : ${1+2 } 便可

除法 : 10/5 : ${10/5 } 也可以写成 ${10 div 5 }

取余 : 10 % 3 : ${10%3 } 或者 ${10 mod 3 }

等于 : ${10==10 } 或者 ${10 eq 10 }

不等于 : ${10 != 10 } 或者 ${10 ne 10 }

小于 : ${8 < 10 } 或者 ${8 lt 10 }

大于 : ${8 > 10 } 或者 ${8 gt 10 }

小于等于 : <= | le

大于等于 : >= | ge

and : && | and

或 : || | or

非 : ! | not


对于取出来的数据是不是为空,可以用下面的函数:

${empty value }

对于不存在,或者你在request里面设置的null, 或者数组,字符串,list,map等容器的长度为0的情况下都会输出true,其他情况输出false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值