`

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组件能说的具体一点吗,我感觉这样说理解的不清晰

相关推荐

    EL表达式语言

    **EL表达式语言** EL(Expression Language)是JavaServer Pages(JSP)2.0及更高版本中的一个强大而简洁的脚本语言,用于在视图层获取和操作JavaBean属性。它允许开发者以声明式的方式访问Java对象的属性,减少在...

    EL表达式语言 仅作为字典参考用

    ### EL表达式语言详解 #### 一、引言 EL表达式语言,即Expression Language,是一种简化了在JSP页面中获取对象属性的过程的语言。它主要用于处理数据模型,并且能够直接从模型中读取属性值,无需编写额外的Java...

    EL表达式语言 非常详细

    ### EL表达式语言详解 #### 9.1 概述 在JSP页面开发中,为了提高代码的可读性和可维护性,开发者们逐渐转向使用标签库来替代传统的Java片段语言来实现页面的显示逻辑。然而,自定义标签虽然灵活,但也容易导致重复...

    关于EL表达式语言的简单总结

    ### EL表达式语言详解 #### 一、EL表达式简介 **EL**(Expression Language)是一种简洁的表达方式,用于在JSP页面中访问JavaBean属性、执行运算等操作。EL表达式广泛应用于JSP页面中,它使得开发人员能够更方便地...

    EL表达式语言基本语法

    EL表达式语言使得在JSP页面中处理数据变得更加简洁和直观,减少了大量显式Java代码的使用,提高了开发效率。它能够轻松访问和操作Java对象的属性,以及进行各种算术和逻辑操作,是JSP开发中的重要工具。

    EL表达式语言PPT

    EL表达式PPT,详细讲解了EL表达式用法

    Java-EL表达式语言讲解,适合初级人员入门学习

    ### Java-EL表达式语言详解 #### 一、EL表达式概述 EL(Expression Language),即表达式语言,是JavaServer Pages(JSP)技术中的一个重要组成部分。EL表达式主要用于简化JSP页面中的数据检索过程,使得开发者能够...

    jsp el 表达式语言文档

    **JSP Expression Language (EL) 知识点详解** ...总结,JSP EL表达式语言是提高JSP开发效率,减少页面代码复杂性的关键工具。通过理解和熟练使用EL,开发者能够创建更加整洁、可维护的JSP应用程序。

    EL表达式的使用详解

    EL 表达式是一种在 Java 服务器页面(JSP)中使用的表达式语言。它提供了一种简单的方式来访问和操作 Java 对象的属性。EL 表达式广泛应用于 JSP、Servlet、JSF 等 Web 开发技术中。本文将详细介绍 EL 表达式的使用...

    在JSP2.0中使用EL表达式语言.doc

    **在JSP2.0中使用EL表达式语言** EL(Expression Language)是JSP2.0引入的一种强大的数据访问语言,它简化了JSP页面中的数据操作,使得开发者无需编写scriptlet()就能方便地访问和处理应用程序中的数据。EL的...

    EL 表达式语言 jsp表达式

    EL(Expression Language,表达式语言)是JSTL(JavaServer Pages Standard Tag Library)中用于输出和输入Java表达式的一种语言。它简化了在JSP页面中获取和操作数据的过程,尤其是在属性值中使用表达式时。EL...

    EL表达式言语和JSTL

    **EL表达式语言和JSTL** EL(Expression Language)表达式语言是JavaServer Pages(JSP)技术的一部分,主要用于简化在JSP页面中获取、操作和显示数据。EL表达式语言提供了一种简洁的方式来访问JavaBeans属性、JSP...

    el表达式语言

    对el表达式的简介,适合刚接触el表达式的开发者来认识el表达式

    EL表达式的语法介绍

    EL 表达式是 Java 服务器页面(JSP)和 Java 服务器面板(JSF)中使用的一种表达式语言,用于在 Web 应用程序中实现动态内容。EL 表达式可以被解析成数值表达式和方法表达式,其中取值表达式用于引用一个值,而方法...

    el表达式语言全部

    - EL表达式以`${}`包裹,可以出现在模板文本中或JSP标记的属性里。 - EL变量范围包括page、request、session和application四个层次,使用`scope`关键字指定范围,例如 `${sessionScope.username}`。 - EL关键字...

Global site tag (gtag.js) - Google Analytics