EL 表达式

EL(Expression Language)表达式

目的:为了使JSP写起来更加简单.表达式语言的灵感来自于ECMAScript和XPath表达式语言,它提供了在JSP中简化表达式的方法.它是一种简单的语言,基于可用的命名空间(PageContext属性)/嵌套属性和对集合/操作符(算术型/关系型和逻辑型)的访问符,映射到Java类中静态方法的可扩展函数以及一组隐式对象.
语法结构:
    ${expression}

EL语言的操作符:
EL提供"."和"[]"两种运算符来存取数据.
当要存取的属性名称包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用"[]".例如:
${user.My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用"[]"来做,而"."无法做到动态取值.例如:
${sessionScope.user[data]}中的data是一个变量.

取得某个对象或集合中的属性值

为了获得集合中的属性,EL支持以下两种操作

1. 使用.操作符来获得有名字的属性。例如表达式${user.username}表明对象user的username属性

2. 使用[]操作符来获得有名字或按数字排列的属性。

表达式${user["username"]}和表达式${user. username }含义相同

表达式${row[0]} 表明row集合的第一个条目。

在这里user是一个类的对象,它的属性username必须符合标准JavaBean的规范,即必须为username属性定义相应的getter、setter方法。


EL存取变量:

    EL存取变量数据的方法很简单,例如:${username}.它的意思是取出某一范围中名称为username的变量值.因为我们并没有指定哪一个范围的username,所以它会依次从Page/Request/Session/Application范围查找.假如途中找到username,就直接回传,不再继续找下去,但若全部范围都没找到时,就回传null.
属性范围在EL中的名称:
Page            PageScope
Request       RequestScope
Session       SessionScope
Application ApplicationScope

EL表达式的操作符


Empty操作符(空值检查)

使用empty操作符来决定对象、集合或字符串变量是否为空或null。例如

${empty param.username}

如果request的参数列表中的username值为null,则表达式的值为true。

EL也可以直接使用比较操作符与null进行比较。如${param.firstname == null}。

比较操作符 描述
== 或 eq 相等检查
!= 或 ne 不等检查
< 或 lt 小于检查
> 或 gt 大于检查
<= 或 le 小于等于检查
>= 或 ge 大于等于检查
${empty student.name}

${(empty student.name)?'空':'非空'}

empty 判断值为空则返回真(true),不为空返回假(false)

<c:if test="${! empty obj}">

    ${obj.name}

</c:if>

<c:if test="${not empty obj}">

    ${obj.name}

</c:if>
规则:

1.若obj为null时,返回true.


2.若obj为空String时,返回true


3.若obj为空Array时,返回true


4.若obj为空Map时,返回true


5.若obj为空Collection时,返回true


6.否则,返回false


EL表达式中还有许多操作符可以帮助完成各种所需的操作,之前的示例中“.”、“[]”就是其中的两个

操作符    功能和作用

.               访问一个bean属性或者Map entry

[]             访问一个数组或者链表元素

()             对子表达式分组,用来改变赋值顺序

? :           条件语句,比如:条件?ifTrue:ifFalse,如果条件为真,表达式值为前者,反之为后者

+             数学运算符,加操作

-              数学运算符,减操作或者对一个值取反

*              数学运算符,乘操作

/或div     数学运算符,除操作

%或mod 数学运算符,模操作(取余)

==或eq   逻辑运算符,判断符号左右两端是否相等,如果相等返回true,否则返回false

!=或ne    逻辑运算符,判断符号左右两端是否不相等,如果不相等返回true,否则返回false

<或lt       逻辑运算符,判断符号左边是否小于右边,如果小于返回true,否则返回false

>或gt      逻辑运算符,判断符号左边是否大于右边,如果大于返回true,否则返回false

<=或le    逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回true,否则返回false

>=或ge   逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回true,否则返回false

&&或and 逻辑运算符,与操作赋。如果左右两边同为true返回true,否则返回false

||或or      逻辑运算符,或操作赋。如果左右两边有任何一边为true返回true,否则返回false

!或not     逻辑运算符,非操作赋。如果对true取运算返回false,否则返回true

empty     用来对一个空变量值进行判断: null、一个空String、空数组、空Map、没有条目的Collection集合

func(args)   调用方法, func是方法名,args是参数,可以没有,或者有一个、多个参数.参数间用逗号隔开


这些操作符都是极其有用的,下面通过几个示例来演示它们的使用方法:

几组操作符的示例:

 ${pageScope.sampleValue + 12} <br>                                                                      // 显示 12 
${(pageScope.sampleValue + 12)/3} <br>                                                                 // 显示 4.0 
${(pageScope.sampleValue + 12) /3==4} <br>                                                         // 显示 true 
${(pageScope.sampleValue + 12) /3>=5} <br>                                                         // 显示 false 
<input type="text" name="sample1" value="${pageScope.sampleValue + 10}">      // 显示值为 10 的 Text 控件 

 

可以看到,对于这些示例,程序设计者完全无需管理它们的类型转换,在表达式内部都已经处理了.有了EL表达式,在JSP页面的编程变得更灵活,也更容易。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值