分享人:慕孟洋
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
JSP2.0最重要的特性之一就是表达式语言EL(Expression Language),由于受到ECMAScript和Xpath表达式语言的启发, EL也被设计成可以轻松地编写免脚本的JSP页面。使用EL表达式,JSP页面可以不再使用任何的JSP声明、脚本和表达式,就可以 轻松的访问应用程序的数据,这使得JSP页面写起来更加简单。
EL表达式的主要作用:
获取数据
执行运算
获取Web开发常用对
基本语法:
EL表达式以${开头,并以}结束。EL表达式的结构:${expression}
[]和.运算符:
EL表达式可以返回任意类型的值。如果EL表达式的结果是一个带有属性的对象,则可以利用[]或则.运算符来访问其属性。
访问对象的属性,可以使用任意一种形式:${object["propertyName"]}或者${object.propertyName}
注意:如果propertyName不是有效的Java变量名,就只能使用[]运算符。
如果对象的属性返回的也是一个对象,并且也带有属性,此时既可以使用[],也可以使用.运算符来访问第二个对象的属性。
取值规则:
EL表达式的取值是从左到右进行的。对于expr-a[expr-b]形式的表达式,其EL表达式的取值方法如下:
1)先计算expr-a得到value-a
2)如果value-a为null,则直接返回null
3)然后计算expr-b得到value-b
4)如果value-b为null,则返回null
5)如果value-a为Java.util.List,则要进行以下处理:
a.强制value-b为int,如果不是,则抛出异常
b.如果value-a.get(value-b)抛出IndexOutBoundsException,则返回null
c.返回value-a.get(value-b)的值
6)如果value-a为java.util.Map,则会查看value-b是否为Map中的一个key。如果是,则返回value-a.get(value-b) ,如果不是,则返回null
7)如果value-a不是一个集合,那么,value-a必须是一个JavaBean。在这种情况下,必须强制value-b为String类型。如果 value-b为String类型。如果value-b是value-a的一个可读属性,则会调用该属性的getter方法返回值。如果getter方法抛出 异常,则该表达式就是无效的。
EL表达式的运算符
empty运算符:${empty username}
EL表达式的隐式对象:
pageContext     param     paramValues
header    headerValues    cookie
initParam    pageScope    requestScope
sessionScope    applicationScope
隐式对象的作用?
pageContext:JSP页面的上下文对象
param:一个包含所有请求参数,并用参数名作为key的Map
paramValues:一个包含所有请求参数,并用参数名作为key的Map
header:包含请求标题,并用标题名作为key的Map
headerValues:包含请求标题,并用标题名作为key的Map
cookie:包含了当前请求对象中所有Cookie对象的Map。
initParam:包含所有环境初始化参数
pageScope:这是一个Map,其中包含了页面域内的所有属性
requestScope:这是一个Map,其中包含了请求域内的所有属性
sessionScope:这是一个Map,其中包含了会话域内的所有属性
applicationScope:这是一个Map,其中包含了应用程序上下文域内的所有属性
Spring+MyBatis企业应用实战
......
感谢大家观看
BY : 慕孟洋