EL表达示的基本用法

el 表达示。。。。。
EL 简介

EL 全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。

EL 是从 JavaScript 脚本语言得到启发的一种表达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL scope 中得到参数时可以自动转换类型,因此对于类型的限制更加宽松。 Web 服务器对于 request 请求参数通常会以 String 类型来发送,在得到时使用的 Java 语言脚本就应该是 request.getParameter(XXX) ,这样的话,对于实际应用还必须进行强制类型转换。而 EL 就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接使用 EL 表达式取得的值,而不用关心它是什么类型。

 

到了JSP 2.0 之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持Servlet 2.4 / JSP2.0 Container,就都可以在JSP 网页中直接使用 EL 了。

除了JSP 2.0 建议使用EL 之外,JavaServer Faces(JSF)EL 纳入规范,由此可知,EL 如今已经是一项成熟、标准的技术。

 

注意:

假若您所用的Container 只支持Servlet 2.3/JSP 1.2,如:Tomcat 4.1.29,您就不能在JSP 网页中直接使用EL,必须安装支持Servlet 2.4 / JSP 2.0 Container

 

<2>EL 语法

EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL 主要的语法结构:

语法:${表达式或变量}

示例一:

<html>

       <body>

              ${sampleValue + 1} <br>

       </body>

</html>

 

示例二:从Session的范围中,取得用户的性别

依照之前JSP Scriptlet的写法如下:

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

String sex = user.getSex( );

 

使用EL 写法如下:

${sessionScope.user.sex}

 

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

 

<3>”与“[ ] 运算符

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

${sessionScope.user.sex}

等于

${sessionScope.user["sex"]}

 

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

${sessionScope.shoppingCart[0].price}

 

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

 

l         两者的差异:

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

${user.My-Name }

 

 

(2)   我们来考虑下列情况

${sessionScope.user[data]}

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

假若data 的值为"name"时,它就等于${sessionScope.user.name}。因此,如果要动态取值时,就可以用上述的方法来做,但 . 无法做到动态取值。

 

<4>EL 隐含对象

EL本身也有自己的隐含对象。EL 隐含对象总共有11 个:

隐含对象

类 型

说 明

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

如同

request.getParameter(String name)。回传String 类型的值

paramValues

java.util.Map

如同

request.getParameterValues(String

name)。回传String []类型的值

header

java.util.Map

如同

request.getHeader(String name)。回传String 类型的值

headerValues

java.util.Map

如同

request.getHeaders(String name)。回传String []类型的值

cookie

java.util.Map

如同request.getCookies( )

initParam

<span style="c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值