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表达式语言 非常详细 pdf EL表达式语言 非常详细
本资源主要介绍EL表达式语言,包含EL语法、EL隐含对象、EL函数等
EL表达式语言 EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。 在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。 1、 value属性包含一个...
关于EL表达式语言的简单总结,里面结合有EL表达式的各种使用方法,以及EL表达式配合JSTL的使用
JSTL EL表达式语言,大致的介绍了表达式语言的使用,可作为日常参考用书,需要非常详细的了解每个标签的含义出处的,请勿下载本书,以免浪费自己的资源分!
jsp el 表达式语言文档
EL表达式PPT,详细讲解了EL表达式用法
el表达式语言的全部.........
NULL 博文链接:https://quicker.iteye.com/blog/624167
Struts与表现层技术的结合 JSTL EL表达式语言简介
Java-EL表达式语言讲解,适合初级人员入门学习
介绍了EL表达式基本语法、隐含对象。语法中有各种操作符、运算符的含义,自学很好的
在JSP2.0中使用EL表达式语言.doc
el 表达式el 表达式el 表达式el 表达式el 表达式
EL 是从 JavaScript 脚本语言得到启发的一种表 达式语言,它借鉴了 JavaScript 多类型转换无关性的特点。在使用 EL 从 scope 中得到 参数时可以自动转换类型,因此对于类型的限制更加宽松。 Web 服务器对于 request...
对el表达式的简介,适合刚接触el表达式的开发者来认识el表达式
EL表达式的简单介绍 一、JSP EL语言定义 E L(Expression Language) 目的:为了使JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种...
JSP 2.0的新特性——表达式语言,灵活运用表达式语言能够使JSP的开发更加方便