栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

EL 表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EL 表达式

1.作用

让jsp书写起来更加的方便。简化在jsp中获取作用域或者请求数据的写法。也会搭配Jstl来进行使用。计算和输出Java对象。本质是在JSP脚本编制元素范围外使用运行时表达式的功能。

2.特点

语法简单,使用方便。举个例子

${sessionScope.user.sex}

(所有EL都是以${为起始、以}为结尾的。)上述EL范例的意思是:从Session的范围中,取得

用户的性别。假若依照之前JSP Scriptlet的写法如下:

User user =(User)session.getAttribute("user");

String sex =user.getSex( );

两者相比较之下,可以发现EL 的语法比传统JSP Scriptlet 更为方便、简洁。

3.   .与 [ ] 运算符

EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:

${sessionScope.user.sex}等于${sessionScope.user["sex"]}

总结来说在写法上 . 不需要用双引号括起变量名,而[]需要

. 和 [ ] 也可以同时混合使用,如下:

${sessionScope.shoppingCart[0].price}

回传结果为shoppingCart中第一项物品的价格。

不过,以下两种情况,两者会有差异:

(1)有特殊字符时使用[]

当要存取的属性名称中包含一些特殊字符,如“. ”或 “–” 等并非字母或数字的符号,就一定要使用 [ ],

例如:${user.CD.Name }

上述是不正确的方式,应当改为:${user["CD.Name"] }

(2). 无法做到动态取值,而[]可以做到动态取值。

我们来考虑下列情况:

${sessionScope.user[data]}

此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};

假若data 的值为"name"时,它就等于${sessionScope.user.name}。

因此,如果要动态取值时,就可以用上述的方法来做,但. 无法做到动态取值。

3.应用[ ]运算符可以获取数组的指定元素,但用.运算符不可以

4.应用[ ]运算符可以获取Ust集合中的元素

5.应用‘”’运算符可以可以获取Map集合中的指定元素

4.EL的使用条件

5.EL的存取范围

pageContext、request、session、application四个对象中的数据,其他数据一概不理会
找到了则获取返回,找不到则什么都不做,也不报错 。默认查找顺序:
pageConext–>request—>session—>application。每次查找都是从小到大进行查找,找到了则获取,不再继续找了。找不到返回null.

6.通过EL访问数据

EL获取请求头数据和Cookie数据
请求头数据
${header}–>返回所有的请求头数据
${header[“键名”]}—>返回指定的键名的请求头数据
${hedaerValues[“键名”]}—>返回指定的键名(同键不同值)的值的数组。

获取Cookie数据
${cookie}—>返回存储了所有的cookie对象的map集合
${cookie.键名}---->返回指定的cookie对象
${cookie.键名 .name}—>返回指定的cookie对象存储的数据的键名。
${cookie.键名.value}—>返回指定的cookie对象存储的数据的值。

7.关系运算符

${逻辑表达式}:&&  与     ||  非      !  非      "?  :"   条件运算
${算术表达式}:+,-,*,/
${关系表达式}:>,<,>=,==,!=,%
特殊:三目运算
注:
+表示加法运算,不表示字符链接。使用EL表达式进行字符链接会报错

8.EL隐含对象

隐含对象

类型

说明

PageContext

javax.servlet.ServletContext

表示此JSP的PageContext

PageScope

java.util.Map

取得Page范围的属性名称所对应的值

RequestScope

java.util.Map

取得Request范围的属性名称所对应的值

sessionScope

java.util.Map

取得Session范围的属性名称所对应的值

applicationScope

java.util.Map

取得Application范围的属性名称所对应的值

param

java.util.Map

如同ServletRequest.getParameter(String name)。回传String类型的值

paramValues

java.util.Map

如同ServletRequest.getParameterValues(String name)。回传String[]类型的值

header

java.util.Map

如同ServletRequest.getHeader(String name)。回传String类型的值

headerValues

java.util.Map

如同ServletRequest.getHeaders(String name)。回传String[]类型的值

cookie

java.util.Map

如同HttpServletRequest.getCookies()

initParam

java.util.Map

如同ServletContext.getInitParameter(String name)。回传String类型的值

不过有一点要注意的是如果你要用EL输出一个常量的话,字符串要加双引号,不然的话EL会默认把你认为的常量当做一个变量来处理,

这时如果这个变量在4个声明范围不存在的话会输出空,如果存在则输出该变量的值。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号