《统一表达式语言(EL).ppt》由会员分享,可在线阅读,更多相关《统一表达式语言(EL).ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 统一表达式语言主要内容:及时计算和延迟计算值表达式和方法表达式常量表达式运算符和保留字隐式对象n n概述概述从从JSP2.0JSP2.0版版开开始始就就引引入入了了统统一一表表达达式式语语言言(ELEL),主主要要是是为为了了解解决决JSPJSP页页面面中中嵌嵌入入大大量量JavaJava代代码码的的维维护护问问题题。ELEL具具有有语语法法简简单、使用方便等特点。单、使用方便等特点。从从JSP2.1JSP2.1版版开开始始,统统一一表表达达式式语语言言还还涵涵盖盖了了JSFJSF(基基于于组组件件的的Java WebJava Web应用框架模型)的表达式语言,其主要功能有:应用框架模
2、型)的表达式语言,其主要功能有:l l动动态态地地读读取取存存储储在在JavaBeanJavaBean组组件件中中的的不不同同数数据据结结构构和和显显式式对对象象的的数据;数据;l l动态地将数据写到动态地将数据写到JavaBeanJavaBean组件中;组件中;l l调用任意静态和公有的方法;调用任意静态和公有的方法;l l动态执行算术运算。动态执行算术运算。7.1 7.1 EL EL 的基本用法的基本用法示例示例首首先先通通过过一一个个简简单单的的示示例例,该该示示例例通通过过login.htmllogin.html调调用用login.jsplogin.jsp,在在后后者者中中通通过过EL
3、EL表表达达式式显显示示登登录录信信息息。login.jsplogin.jsp文文件如下:件如下:登录信息登录信息 姓名:姓名:$param.username$param.username 密码:密码:$param.password$param.password 爱好:爱好:$paramValues.Habit0$paramValues.Habit0$paramValues.Habit1$paramValues.Habit17.2 7.2 及时计算和延迟计算及时计算和延迟计算 n n及及时时计计算算:指指页页面面在在第第一一次次被被调调用用时时,JSPJSP引引擎擎就就计计算算表表达达式式并并
4、立立即即返回结果。返回结果。l l所有使用所有使用$exprexpr 符号的表达式都是及时执行的。符号的表达式都是及时执行的。l l只能用于只能用于HTMLHTML模板数据中或者作为能够使用运行时表达式的模板数据中或者作为能够使用运行时表达式的JSPJSP标签标签属性值。例如:属性值。例如:n n延延迟迟计计算算:在在页页面面生生命命周周期期以以后后通通过过某某种种机机制制延延迟迟计计算算表表达达式式,直直到到生命周期的合适点出现。生命周期的合适点出现。l l延迟计算表达式的格式为延迟计算表达式的格式为#exprexpr l l可可以以在在任任何何使使用用表表达达式式技技术术定定义义的的页页面
5、面生生命命周周期期的的其其他他阶阶段段进进行行计计算算。例如:例如:n n统统一一表表达达式式语语言言(ELEL)既既支支持持及及时时计计算算,也也支支持持延延迟迟计计算算。由由于于JSFJSF技技术术采采用用多多阶阶段段生生命命周周期期,因因而而其其ELEL表表达达式式需需要要延延迟迟计计算算,直直到到生生命命周期的合适点出现。周期的合适点出现。7.3 7.3 值表达式和方法表达式值表达式和方法表达式 n n值表达式值表达式l l值值表表达达式式又又可可以以分分为为rvaluervalue和和lvaluelvalue表表达达式式。rvaluervalue表表达达式式是是只只能读不能写的表达式
6、,而能读不能写的表达式,而lvaluelvalue表达式既能读又能写。表达式既能读又能写。l l所所有有及及时时计计算算的的表表达达式式$expr$expr通通常常都都是是rvaluervalue表表达达式式;延延迟迟计计算算的的表表达达式式#expr#expr通通常常既既可可以以作作为为rvaluervalue表表达达式式,也也可可以以作作为为lvaluelvalue表达式。表达式。l l两两种种值值表表达达式式可可以以引引用用JavaBeanJavaBean组组件件、集集合合或或隐隐式式对对象象。如如:$customer$customer、$customer.addressstreet$c
7、ustomer.addressstreetl lrvaluervalue表达式还可以直接引用非对象的常量值表达式还可以直接引用非对象的常量值 ,如:,如:$literal$literal、$customer.age+20$customer.age+20、$true$true、$57$57l l值表达式中可以使用常量:值表达式中可以使用常量:n n布尔布尔:true true 和和 false falsen n整数整数:和:和JavaJava中的一样中的一样n n浮点浮点:和:和JavaJava中的一样中的一样n n字字符符串串:使使用用单单引引号号和和双双引引号号,可可包包含含转转义义符符,如
8、如:”、,等。等。n n空值空值:nullnulll l值表达式的适用范围值表达式的适用范围 n n在静态文本中在静态文本中n n在任何能够访问表达式的标准标签或者自定义标签的属性中。在任何能够访问表达式的标准标签或者自定义标签的属性中。n n只使用表达式结构只使用表达式结构n n与一个或多个独立的表达式或静态文本混合使用与一个或多个独立的表达式或静态文本混合使用n n只使用文本,即常量表达式,可省去只使用文本,即常量表达式,可省去$n n值表达式值表达式n n方法表达式方法表达式l l用于调用任意的公有方法,用于调用任意的公有方法,该方法必须能够返回一个结果该方法必须能够返回一个结果。l l
9、方方法法表表达达式式只只能能用用于于标标签签的的属属性性中中,并并且且只只能能以以下下面面的的方方式式来来使使用:用:n n单个表达式结构单个表达式结构 n n只使用文本只使用文本 l l方方法法表表达达式式主主要要用用于于JSFJSF技技术术。由由于于一一个个方方法法可可以以在在生生命命周周期期的的不不同同阶阶段段被被调调用用,因因而而方方法法表表达达式式总总是是使使用用延延迟迟计计算算符符号号#。相相关关用用法在后面章节还会介绍。法在后面章节还会介绍。7.4 EL 7.4 EL 运算符运算符n n算术运算符:算术运算符:l l+、-(双目运算双目运算)、*、/或或divdiv、%或或mod
10、mod、-(单目运算单目运算)n n关系运算符:关系运算符:l l=或或eqeq、!=!=或或nene、或或gtgt、=或或lelen n逻辑运算符:逻辑运算符:l landand或或&、oror或或|、notnot或或!n n空运算符:空运算符:l lemptyempty 判断一个值是否为空或者判断一个值是否为空或者nullnulln n条件运算符:条件运算符:l lA A?B B:C C 根根据据A A的的值值判判断断执执行行B B或或者者C C,若若A A为为真真则则执执行行B B,否否则则执行执行C C7.4 EL 7.4 EL 保留字保留字andandeqeqgtgttruetrue
11、instanceofinstanceofororneneleleFalseFalseemptyemptynotnotlt ltgegenullnulldivdivmodmod 其中有部分保留字暂未使用,只是预留给将来可能的需要其中有部分保留字暂未使用,只是预留给将来可能的需要【示例】【示例】operation.jspoperation.jsp7.5 7.5 隐式对象隐式对象所所谓谓隐隐式式对对象象,这这里里指指的的是是不不需需要要声声明明就就可可直直接接使使用用的的对对象象。ELEL的隐式对象分为的隐式对象分为5 5大类,共大类,共1111种,分别介绍如下:种,分别介绍如下:n n JSPJS
12、P上下文环境隐式对象上下文环境隐式对象4 4个与个与JSPJSP页面上下文环境相关的页面上下文环境相关的pageContextpageContext对象:对象:n nservletContextservletContext:与与ServletServlet和和同同一一个个应应用用中中的的WebWeb组组件件的的上上下下文文环环境关联的对象。境关联的对象。n nsessionsession:会话对象,与客户的一次访问相关联的对象。:会话对象,与客户的一次访问相关联的对象。n nrequestrequest:与发送请求信息相关联的对象。:与发送请求信息相关联的对象。n nresponserespo
13、nse:与响应请求相关联的对象。:与响应请求相关联的对象。n n参数访问隐式对象参数访问隐式对象l lparamparam:把请求参数名映射到单个值上。:把请求参数名映射到单个值上。l lparamValuesparamValues:把请求参数名映射到一个值的数组上:把请求参数名映射到一个值的数组上 。例如:。例如:姓名:姓名:$param.username$param.username密码:密码:$param.password$param.password爱好:爱好:$paramValues.Habit0$paramValues.Habit0$paramValues.Habit1$param
14、Values.Habit1n n作用域隐式对象作用域隐式对象l lpageScopepageScope:把:把pagepage范围内的变量名映射到它们的值上。范围内的变量名映射到它们的值上。l lrequestScoperequestScope:把把requestrequest作作用用范范围围内内的的变变量量名名映映射射到到它它们们的的值值上。上。l lsessionScopesessionScope:把把sessionsession作作用用范范围围内内的的变变量量名名映映射射到到它它们们的的值值上。上。l lapplicationScopeapplicationScope:把把applica
15、tionapplication作作用用范范围围内内的的变变量量名名映映射射到到它们的值上。它们的值上。在在未未指指定定作作用用域域时时,变变量量的的搜搜索索顺顺序序是是从从小小到到大大,即即page page request request session session applicationapplication,如果均未找到则返回,如果均未找到则返回nullnull。有如下有如下3 3个访问个访问HTTPHTTP头信息的隐匿对象:头信息的隐匿对象:l l header header:访问:访问HTTPHTTP请求的一个具体的请求的一个具体的HeaderHeader值值l l header
16、Values headerValues:访问所有的:访问所有的HTTPHTTP请求的请求的headerheader值值l l cookie cookie:引用输入的:引用输入的CookieCookie对象对象n n请求头访问隐式对象请求头访问隐式对象n n初始化参数访问隐式对象初始化参数访问隐式对象即即initParaminitParam对对象象,它它把把上上下下文文初初始始化化参参数数的的名名字字映映射射到到一一个个值值上上。可可以以通通过过initParaminitParam来来取取得得webweb站站点点的的contextcontext参参数数值值。例如,在例如,在web.xmlweb.
17、xml文件中设定初始化参数如下:文件中设定初始化参数如下:username username Maly Maly.可用下面的语句来访问初始化参数:可用下面的语句来访问初始化参数:$initParam.username$initParam.username它等价于它等价于 (String)application.getInitParameter(username)(String)application.getInitParameter(username)n n隐式对象使用示例隐式对象使用示例l l例例1 1:ELObj.jspELObj.jspl l例例2 2:operation.jspoperation.jspn n本章小结本章小结l l及时计算和延迟计算及时计算和延迟计算l l值表达式和方法表达式值表达式和方法表达式l l常量表达式常量表达式l l运算符和保留字运算符和保留字l l隐式对象隐式对象n n下一章下一章l lJSTLJSTL