JavaWeb——EL表达式

在JSP开发中,为了获取Servlet域对象中存储的数据,需要书写很多的Java代码,这样会使JSP页面看起来十分的混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式。EL是Expression Language的缩写,它是一种简单的数据访问语言。


一、初识EL

EL表达式的语法,都是用“${ }”表示的。
关于EL表达式和使用Java代码的区别:

在Servlet中:

request.setAttribute("username","zhangsan");
request.setAttribute("password","123");
  • 在JSP中使用Java脚本:
用户名:<%=request.getAttribute("username")%><br />
密码:  <%=request.getAttribute("password")%>
  • 使用EL表达式
用户名:${username}<br />
密码:  ${password}

EL表达式不仅能获取Servlet中存储的数据,也能简化JSP中的代码量,使程序简单易维护,另外,当域对象里面的值不存在时,使用EL表达式获取域对象里面的值返回空字符串;而使用Java脚本方式获取,返回值是null,会报空指针异常

二、EL中的运算符

1.点运算符(.)

EL表达式中的点运算符,用于访问JSP页面中某些对象的属性,如JavaBean对象、List集合、Array数组等。

<!--  访问user对象的username属性-->
${user.username}

2.方括号运算符([])

EL表达式中的方括号运算符与点运算符的功能相同,都用于访问JSP页面中某些对象的属性。当获取的属性名中包含一些特殊符号,如“_”或“-”“?”等并非数字或字母的符号,就只能使用方括号运算符来访问该属性。

<!--不能使用${user.user_name}-->
${user["user_name"]}
  • 点运算符和方括号运算符在某种情况下可以互换,如${user.username}等价于${user["username"]}
  • 方括号运算符还可以访问List集合或数组中指定索引的某个元素,如表达式${users[0]}用于访问集合或数组中第一个元素。在这种情况下,只能使用方括号运算符,不能使用点运算符。
  • 方括号运算符和点运算符可以相互结合使用,如${users[0].username},表示访问集合或者数组中的第一个元素的username属性。

3.算术运算符

算数运算符说明算术表达式结果
+${1+1}2
-${1-1}0
*${1*1}1
/ (或div)${1/1}或${1 div 1}1
% (或mod)取余(取模)${1%1}或${1 mod 1}0

4.比较运算符

EL表达式中的比较运算符用于比较两个操作数的大小,操作数可以是各种常量、EL表达式、EL变量,所有的运算执行结果都是布尔类型。

比较运算符说明算术表达式结果
==(或eq)等于${10==2}或${10 eq 2}false
!=(或ne)不等于${10!=2}或${10 ne 2}true
<(或lt)小于${10<2}或${10 lt 2}false
>(或gt)大于${10>2}或${10 gt 2}true
<=(或le)小于等于${10<=2}或${10 le 2}false
>=(或ge)大于等于${10>=2}或${10 ge 2}true

5.逻辑运算符

逻辑运算符说明算术表达式结果
&&(and)逻辑与${true&&false}或${true and false}false
|| (or)逻辑或${false||true}true
!(not)逻辑非${!=true} 或${not true}false

6.empty运算符

EL表达式中的empty运算符用于判断某个对象是否为null或"",结果为布尔类型,其基本的语法格式如下:

${empty var}
  • var变量不存在(没有定义),结果返回true
  • var变量的值为null,结果返回true
  • var变量引用集合(Set、Map、List)类型对象,并且在集合对象中不包含任何元素时,结果返回true

7.条件表达式

EL表达式中条件运算符用于执行某种条件判断,类似于Java中的if-else语句,其语法格式如下:

${A?B:C}

表达式A的计算结果为布尔类型:

  • 如果表达式A的计算结果为true,就执行表达式B,并返回B的值
  • 如果表达式A的计算结果为false,就执行表达式C,并返回C的值

8.“()”运算符

EL表达式中的圆括号用于改变其他运算符的优先级。


三、EL隐式对象

不需要new就能使用的对象,自带的对象

  • 作用域访问对象(EL隐式对象):pageScope、requestScope、sessionScope、applicationScope
  • 参数访问对象
  • JSP隐式对象
隐含对象名称描述
pageContext对应于JSP页面中的pageContext对象
pageScope代表page域中用于保存属性的Map对象
requestScope代表request域中用于保存属性的Map对象
sessionScope代表session域中用于保存属性的Map对象
applicationScope代表application域中用于保存属性的Map对象
param表示一个保存了所有请求参数的Map对象
paramValues表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是String类型数组
header表示一个保存了所有HTTP请求头字段的Map对象
headerValues表示一个保存了所有HTTP请求头字段的Map对象,返回的是String类型数组
cookie用来取得使用者的cookie值,cookie的类型是Map
initParam表示一个保存了所有Web应用初始化参数的Map对象
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值