`

EL 表达式语言

 
阅读更多

JSP2.0引入了表达式语言Expression Language,EL.

JSP2.1中提供的统一表达式语言是JSP2.0提供的表达式语言和JSF技术创建的表达式语言的组合体.

 

表达式语言的功能主要是为了简化"常见需求"的实现.表达式语言可以完成以下任务:

动态读取存储在JavaBean组件中的不同数据结构和显示对象中的数据.

动态地将数据写到JavaBean组件中.

调用任意静态和公有的方法.

动态执行算数运算.

 

 

一.使用表达式语言

通过page指令的isELIgnored属性可以禁用EL表达式.只要不被禁用.EL表达式可以出现在任何位置.

<%@page isELignored="false"%>   启用EL功能.

<%@page isELignored="true "%>   停止EL功能.


JSP引擎遇到EL表达式后,即计算.若有结果值,即把结果值转换为字符串,把字符串替换EL表达式.

 

 

 

二.JSP语法

1.  及时计算表达式

${expression}

页面第一次被调用时,JSP引擎就计算表达式并立即返回结果.

及时计算通常用于只读值的计算.

 

2. 延时计算表达式

#{expression}

表达式为作为标签属性时,使用延时计算表达式.

在任何使用表达式技术定义的页面生命周期的其他阶段进行计算.

 

3. [ ]操作符与 . 操作符

访问数据使用"[]" 或 "."

使用”.”操作符

${expr.identifyier} 

“.”号左边的变量是一个Map或者是JavaBean,”.”右边是Map的key,或是JavaBean的属性.

使用”[ ]”操作符

${expr[“identifyier”]}

“[ ]”号左边的变量是一个Map,JavaBean,List或数组,”.”.

 

说明:

${expr.identifyier} 等价于 ${expr[“identifyier”]}.

${expr.identifyier} 中identifyier中不能有-号.如果有,只能使用${expr[“identifyier”]}

 

例:访问JavaBean对象user的属性name.

${user.name}

${ user[“name”]}

 

算术操作符

+ ${23+5} 28

- ${23-5} 18

* ${23*5} 115

/ ${23/5} 4.6

% ${23%5} 3

说明:

对于除法运算A/B,如果A和B为null.返回(Long)0.如果A和B的类型是BigDecimal或BigInteger,将被强制转换为BigDecimal,然后返回A.divide(B,BigDecimal.ROUND_HALF_UP).其他情况A,B强制转换为Double,然后相除.

 

关系操作符

==,!=,<,>,<=,>=

 

逻辑操作符

&&或and,||或or,!或not

 

empty操作符

empty操作符是一个前缀操作符,用于检测一个值是否为null或者empty.

例:  变量A不存在.则${empty A}返回true.

 

条件操作符?:

例:${A?B:C}

 

圆括号()

优先级计算

 

操作符的优先级

1.  []或.

2.  ()

3.  - not ! empty

4.  * / div % mod

5.  + -

6.  < > <= >= 

7.   == !=

8.   && and

9.   || or

10.  ?:

 

 

 

三.隐含对象

pageContext (javax.servlet.jsp.PageContext对象)

利用pageContext可以访问ServletContext,Request,Response,Session等对象.

例:

${pageContext.servletContext.servletInfo}

${pageContext.request.requestURL }

${pageContext.response.characterEncoding }

${pageContext.session.creationTime}

 

pageScope  (java.util.Map类型)

将页面范围内的属性名和它的值进行映射.

主要用于获取页面范围内的属性的值.

例:${pageScope.user}

如果user是一个JavaBean对象,还可以直接取出其属性值.

例:${pageScope.user.name}

 

requestScope  (java.util.Map类型)

将请求范围内的属性名和它的值进行映射.

主要用于请求范围的值.

例:   ${requestScope.user.age}

注意这不是request对象,要获取request调用${pageContext.request}

 

sessionScope  (java.util.Map类型)

将会话范围内的属性名和它的值进行映射.

主要用于会话范围内的属性的值.

例:   ${sessionScope.user.education}

注意这不是session对象,要获取session调用${pageContext. session}

 

applicationScope  (java.util.Map类型)

将应用程序范围内的属性名和它的值进行映射.

主要用于应用程序范围内的属性的值.

例:${applicationScope.user.email}

 

param  (java.util.Map类型)

将请求中的参数的名字和一个字符串进行映射.

主要用于获取请求中的参数值,相当于调用ServletRequest.getParameter(String name).

例:对于一个请求URL

http://localhost:8080/warcraft/hero.jsp?name=dk

要得到请求参数name的值,可以使用${param.name}

 

paramValues  (java.util.Map类型)

将请求中的参数名和该参数对应的String数组进行映射.即{String:String[]}

主要用于获取请求中的参数的值.等同于调用request. getParameterValues(String name).

要访问具体的参数值可以通过"[]"操作符进行,如${paramValues.name[0]}

 

header   (java.util.Map类型)

将请求报头的名字和单个的字符串进行映射.

主要用于请求报头的值. 等同于调用ServletRequest.getHeader(String name)

例:${head[“User-Agent”]}

 

headerValues  (java.util.Map类型)

将请求报头的参数名和该参数对应的String数组进行映射.即{String:String[]}

主要用于获取请求报头的值,等同于调用ServletRequest.getHeaders(String name)

 

cookie  (java.util.Map类型)

将Cookie的名字和一个Cookie对象进行映射.

主要用于获取Cookie对象,如同调用HttpServletRequest.getCookies()后,从返回的Cookie数组中找到匹配名字的第一个Cookie对象.

例:要得到一个名为userinfo的cookie对象,可以按照如下方式调用

${cookie.userinfo}

如果要得到cookie中的值,可按如下方式调用

${cookie.userinfo.value}

 

initParam  (java.util.Map类型)

将上下文初始化参数的名字和它们的值进行映射.

主要用于获取Web应用程序初始化参数的值,相当于ServletContext.getInitParameter(String  name)

例:在web.xml中.使用<context-param>元素配置了一个dirver参数,要得到它的值,可以按照如下方式调用:${initParam.dirver}

等价于在JSP中使用application.getInitParameter(“dirver”).

 

 

 

四.命名变量

在EL中,对于命名变量值的查找是通过PageContext.findAttribute(String)方法来完成的.

例:  ${user}.

该表达式将按照page,request,session,application范围的顺序查找命名的属性user.如果属性没有找到,将返回null.

也可以利用pageScope,requestScope,sessionScope,ApplicationScpoe指定范围.

例:  ${sessionScope.user}

 

 

 

五.函数

在EL中,允许定义和使用函数.

函数的语法如下

ns:func(a1, … ,an)

其中前缀ns必须匹配包含了函数的标签库的前缀.

函数的定义和使用机制类似于标签库.

分享到:
评论
1 楼 静夜独窗 2014-08-08  
JavaBean组件能说的具体一点吗,我感觉这样说理解的不清晰

相关推荐

Global site tag (gtag.js) - Google Analytics