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必须匹配包含了函数的标签库的前缀.
函数的定义和使用机制类似于标签库.
分享到:
相关推荐
**EL表达式语言** EL(Expression Language)是JavaServer Pages(JSP)2.0及更高版本中的一个强大而简洁的脚本语言,用于在视图层获取和操作JavaBean属性。它允许开发者以声明式的方式访问Java对象的属性,减少在...
### EL表达式语言详解 #### 一、引言 EL表达式语言,即Expression Language,是一种简化了在JSP页面中获取对象属性的过程的语言。它主要用于处理数据模型,并且能够直接从模型中读取属性值,无需编写额外的Java...
### EL表达式语言详解 #### 9.1 概述 在JSP页面开发中,为了提高代码的可读性和可维护性,开发者们逐渐转向使用标签库来替代传统的Java片段语言来实现页面的显示逻辑。然而,自定义标签虽然灵活,但也容易导致重复...
### EL表达式语言详解 #### 一、EL表达式简介 **EL**(Expression Language)是一种简洁的表达方式,用于在JSP页面中访问JavaBean属性、执行运算等操作。EL表达式广泛应用于JSP页面中,它使得开发人员能够更方便地...
EL表达式语言使得在JSP页面中处理数据变得更加简洁和直观,减少了大量显式Java代码的使用,提高了开发效率。它能够轻松访问和操作Java对象的属性,以及进行各种算术和逻辑操作,是JSP开发中的重要工具。
EL表达式PPT,详细讲解了EL表达式用法
### Java-EL表达式语言详解 #### 一、EL表达式概述 EL(Expression Language),即表达式语言,是JavaServer Pages(JSP)技术中的一个重要组成部分。EL表达式主要用于简化JSP页面中的数据检索过程,使得开发者能够...
**JSP Expression Language (EL) 知识点详解** ...总结,JSP EL表达式语言是提高JSP开发效率,减少页面代码复杂性的关键工具。通过理解和熟练使用EL,开发者能够创建更加整洁、可维护的JSP应用程序。
EL 表达式是一种在 Java 服务器页面(JSP)中使用的表达式语言。它提供了一种简单的方式来访问和操作 Java 对象的属性。EL 表达式广泛应用于 JSP、Servlet、JSF 等 Web 开发技术中。本文将详细介绍 EL 表达式的使用...
**在JSP2.0中使用EL表达式语言** EL(Expression Language)是JSP2.0引入的一种强大的数据访问语言,它简化了JSP页面中的数据操作,使得开发者无需编写scriptlet()就能方便地访问和处理应用程序中的数据。EL的...
EL(Expression Language,表达式语言)是JSTL(JavaServer Pages Standard Tag Library)中用于输出和输入Java表达式的一种语言。它简化了在JSP页面中获取和操作数据的过程,尤其是在属性值中使用表达式时。EL...
**EL表达式语言和JSTL** EL(Expression Language)表达式语言是JavaServer Pages(JSP)技术的一部分,主要用于简化在JSP页面中获取、操作和显示数据。EL表达式语言提供了一种简洁的方式来访问JavaBeans属性、JSP...
对el表达式的简介,适合刚接触el表达式的开发者来认识el表达式
EL 表达式是 Java 服务器页面(JSP)和 Java 服务器面板(JSF)中使用的一种表达式语言,用于在 Web 应用程序中实现动态内容。EL 表达式可以被解析成数值表达式和方法表达式,其中取值表达式用于引用一个值,而方法...
- EL表达式以`${}`包裹,可以出现在模板文本中或JSP标记的属性里。 - EL变量范围包括page、request、session和application四个层次,使用`scope`关键字指定范围,例如 `${sessionScope.username}`。 - EL关键字...