javaWEB开发EL表达式.ppt

上传人:wuy****n92 文档编号:70792421 上传时间:2023-01-28 格式:PPT 页数:34 大小:209KB
返回 下载 相关 举报
javaWEB开发EL表达式.ppt_第1页
第1页 / 共34页
javaWEB开发EL表达式.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《javaWEB开发EL表达式.ppt》由会员分享,可在线阅读,更多相关《javaWEB开发EL表达式.ppt(34页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Java Web Java Web 开发开发 EL EL表达式表达式目标Expression Language在JSP 2.0中纳入了JSP的标准,它定义了变量存取、运算、隐含对象、函式等内容,配合JavaBean或其它标签库,可以实现较好的逻辑与视图分离之目的。简介简介ExpressionLanguage 使用使用EL存取属性存取属性 或或.的选择的选择 EL隐含物件隐含物件 EL运算符运算符 简介 Expression Language 您可以将一些程序逻辑放入JavaBean中,并配合、与 等标签来编写JSP网页,以实现逻辑与视图分开的目的,然而使用JavaBean有其限制,JavaBe

2、an配合标签只能用来存取一些简单的属性,而不能用来存取集合中的某个元素,这仍必须要配合Scriptlet才能存取。另外为了要使用一些JSP隐含对象,例如request、response、session等等,您也不免要使用Scriptlet,在 JSP中,为了要实现逻辑视图分离的目的,您还必须要搭配使用JSP标准标签函式库(JavaServer Page Standard Library,JSTL)或甚至自订标签函式库(custom tag library)来实现。JSP Expression Language本来是包括在JSTL 1.0的一个简单的数据存取与运算的语言,在JSP 2.0中,则纳

3、入了JSP正式标准之中,成为JSP所支持的特性之一,JSP Expression Language定义了变量存取、运算、隐含对象、函式等内容,配合JSTL的其它标签或流程控制标签,就可以实现更好的逻辑视图分离之目的。来看个简单的例子,了解JSP Expression Language的基本使用方式,下面这个JSP网页可以计算使用者所请求的两个数字相加结果:elTest.jsp EL Test 简单的EL数据存取与运算:$param.a+$param.b=$param.a+param.b 如果使用页面或直接在网址上传入a与b的值,例如:http:/localhost:8080/myjsp/elT

4、est.jsp?a=10&b=14则会取得下面的结果:ELTest简单的简单的EL数据存取与运算:数据存取与运算:10+14=24 在这个简单的例子中,您可以看到Expression Language是使用$与 来包括所要存取的隐含对象、变量与进行运算,param是Expression Language的隐含对象,表示使用者的请求参数,param.a表示取得使用者请求参数a的值,大致而言,Expression Language中的每一个隐含对象,其存取的数据与作用范围对应于JSP隐含对象,至于+则是Expression Language中定义的运算符,EL运算符同一般的程序语言一样,提供有算术

5、运算、逻辑运算、关系运算等运算符,另外还有一些特别的运算符。在上面这个例子中,您看不到Scriptlet的部份,在语法上可以更切合的结合在HTML语法中,再来看一个简单的例子,使用Expression Language的pageContext隐含对象来取得一些使用者的相关信息:elTest.jsp EL Test 请求方法:$请求参数:$使用者IP:$这个例子是取过Expression Language的pageContext来存取,并通过该接口来存取request属性,也就是调用getRequest()方法来取得HttpServletRequest,然后再存取 HttpServletRequ

6、est的各个属性,也就是分别调用getMethod()、getQueryString()、getRemoteAddr()等方法,执行的结果可能是:ELTest请求方法:请求方法:GET请求参数:请求参数:a=10&b=14使用者使用者IP:127.0.0.1 关于Expression Language的一般例子,您可以在Tomcat的范例中先找到一些程序,启动Tomcat之后您就可以进行在线测试,本地测试网址是:http:/localhost:8080/jsp-examples/您可以使用 page指令元素指令元素 的isELIgnored属性来设定JSP网页是否使用EL,原因在于您的网页中可

7、能已含有与EL类似的语法,例如样版文字之类,您也可以在web.xml中设定标签为true来决定不使用EL,例如:.*.jsptrue.使用 EL 存取属性web.xml中的是用来预设所有JSP网页是否使用EL,如果JSP网页使用page指令元素的isELIgnored设定是否支持EL,则以page指令元素的设定为主。在JSP网页中,您可以设定属性或JavaBean的作用范围为page、request、session、application等,之后就可以藉由属性或JavaBean的别名,并指定作用范围来存取属性或JavaBean,您可以使用 getAttribute()方法来取得属性,这必须在S

8、criptlet中使用,而使用存取JavaBean的标签可以避免使用Scriptlet,然而其限制是只能取得简单的资料,而不能取得如数组之内的元素数据。可以使用EL指定属性或JavaBean的参考名称来取得属性或JavaBean的值,先举一个简单的例子,首先编写一个只有Scriptlet的JSP网页:attribute.jsp 如果您连至上面的网页,它会在request中设定username属性,然后马上forward至elTest.jsp,而elTest.jsp中只使用HTML标签与EL,如下所示:elTest.jsp Hello,$username!所得到的结果网页如下:Hello,Jus

9、tin!在这个例子中,您也大致看到Model 1的一个例子,您可以让某些JSP网页实现程序逻辑,而在某些JSP网页中使用EL、JavaBean或是标签等,实现程序逻辑与视图分开的机制。在EL中,可以指定属性或JavaBean的作用范围来存取它们,这必须使用到EL隐含对象,这将在之后介绍,如果不指定作用范围的话,预设是page、request、session、application的顺序来寻找EL中所指定的属性。如果存入的属性对象具有getXXX()之类的方法,则可以使用下面的方式来取得相对应名称的属性:Hello,$user.name!Youridis$user.id.例如我们先编写一个Use

10、rBean类别:UserBean.java package com.project;public class UserBean private String name;private String id;public void setName(String name)this.name=name;public void setId(String id)this.id=id;public String getName()return name;public String getId()return id;使用下面这个JSP网页来测试它:elTest.jsp Hello,$userBean.nam

11、e!Your id is$userBean.ID.当然,就上面这个例子而言,也可以简单的使用来取得JavaBean的属性值,然而如果JavaBean 返回的是一个数组,该如何取得数组当中的某个元素值呢?使用EL的话,您可以藉由运算子来指定所要存取的对象,例如根据索引值来取得返回数组的某个元素,为了测试,先简单的编写下面这个测试用的类别:ArrayTestBean.java package com.project;public class ArrayTestBean public String getTestArray()String test=Justin,momor,Beckyday;ret

12、urn test;可以藉由下面这个JSP网页来进行测试:elTest.jsp test0=$arrayTestBean.testArray0 test1=$arrayTestBean.testArray1 test2=$arrayTestBean.testArray2 最后传回的结果是:test0=Justintest1=momortest2=Beckyday 或.的选择 在EL中,您可以使用.运算符来取得JavaBean属性或Map对象中的值,例如若student是个JavaBean,其上有一个name属性,则您可以这么取得该属性的值:$student.name而事实上,您也可以使用运算符来

13、取得值,例如:$studentname在EL中,假设table是一个Map对象,则您可以使用.运算符并在之后接上键值来取得Map中对应的值,例如以title为键值来取得对应的值:$table.title而使用运算符也是可以的,例如:$tabletitle所以归纳来说,使用.运算符时,左边要是个JavaBean或Map对象,而右边必须是JavaBean的属性或是Map的键值。而使用运算符时,除了左边要是个JavaBean或Map对象,而右边必须是JavaBean的属性或是Map的键值之外,还有更进一步的功能,左边也可以是对象或数组,而右边还可以是索引值。举个例子来说,如果有个数组储存于reque

14、st之中:Stringnames=Justin,caterpillar,momor,Becky;request.setAttribute(nameList,names);您可以在使用EL时,如下使用来取得数组中的值,例如取得索引1位置的值:$nameList1上例会显示caterpillar的字符串,更进一步的,EL还会将字符串索引值转换为int类型,例如:$nameList2上例会显示“momor”的字符串结果。总结来说,.与 运算符可以处理JavaBean及Map对象,而运算子给您更多的功能,可以处理或数组,如果中使用包括一个数值,则EL会尝试将之转换为int再进行索引存取。EL 隐含物件

15、 在EL中提供有11个隐含对象,其中除了pageContext隐含对象是个JavaBean对象,对应于 类型之外,剩下的隐含对象都是对应于类型,所以使用EL隐含对象,可以让您以字典的方式来取值,例如users.get(Justin)可以使用usersJustin的方式来取得字典Justin所对应的数值。与作用范围相关的EL隐含对象有pageScope、requestScope、sessionScope与 applicationScope,它们分别可以取得使用JSP隐含对象pageContext、request、session与 application的 setAttribute()方法所设定的

16、属性对象,如果不使用EL隐含对象指定作用范围,则预设是取得pageScope的属性。如果要取得与使用者请求参数数据,则可以使用param或paramValues,举例来说,$param.user 其作用相当于,而paramValues则相当于request.getParameterValues(),可与取得页面多选项的值,由于传回的是多个值,您可以使用用运算运算子来指定取得哪个元素,例如$paramValues.hobbies0。如果要取得使用者请求的表头数据,则可以使用header或headerValues隐含对象,例如$headerUser-Agent,headerValues则用来取得同

17、一表头所包括的多值,作用相当于request.getHeaders()方法。cookie隐含对象可以用来取得使用者的Cookie设定值,虽然我们之前没有说明过Cookie的使用,但是其使用方式类似于 session;如果您在Cookie中设定了username属性,则可以使用$cookie.username 来取得属性值。initParam可以用来取得JSP网页在web.xml中设定的初始值,例如$initParam.initCount 的作用相当于。pageContext对应于型态,您可以藉由ServletContext来取得 request、response、session等对象,从而取得

18、当中的相关讯息,只要是ServletContext中getXXX()方法,就可以用$pageContext.xxx 来取得,如果XXX对象有getYYY()方法,则可以用$来取得值,例如$可以用来取得HttpServletRequest对象,并使用它的getRemoteAddr()方法来取得使用者的IP地址。EL 运算符使用EL,您可以直接实行一些算术运算、逻辑运算与关系运算,其使用就如同在一般常见的程序语言中之运算,您也可以在安装好Tomcat之后,连接上http:/localhost:8080/jsp-examples/找到一些EL运算的例子。算术运算子有:加法(+),减法(-),乘法(*

19、),除法(/or div)与余除(%or mod)。下面是Tomcat中算术运算的一些例子:表达式 结果$1 1$1+2 3$1.2+2.3 3.5$1.2E4+1.4 12001.4$-4-2-6$21*2 42$3/4 0.75$3 div 4 0.75,除法$3/0 Infinity$10%4 2$10 mod 4 2,也是余除$(1=2)?3:4 4 如同在Java语法一样(expression?result1:result2)是个三元运算,expression为true显示result1,false显示result2。逻辑运算有:and、or、not。一些例子为:表达式 结果$tru

20、e and false false$true or false true$not true false 关系运算有:小于Less-than(or gt)、小于或等于Less-than-or-equal(=or ge)、等于Equal(=or eq)、不等于Not Equal(!=or ne),由英文名称可以得到lt、gt等运算子之缩写词,以下是Tomcat的一些例子:表达式 结果$1 (4/2)false$1 (4/2)false$4.0=3 true$4.0 ge 3 true$4=3 false$4 le 3 false$100.0=100 true$100.0 eq 100 true$(

21、10*10)!=100 false$(10*10)ne 100 false 左边是运算子的使用方式,右边的是运算结果,关系运算也可以用来比较字符或字符串,按字典顺序来决定比较结果,例如:表达式 结果$a hit false$4 3 true EL运算子的执行优先级与Java运算子对应,如果有疑虑的话,也可以使用括号()来自行决定先后顺序。另外,.与 被用来作为存取EL中变量所参考之对象属性,在某些程度上,.与 是可以交换替代使用的,例如$user.name 也可以写为$username,然而建议将用于取得像Map之类的对象属性,例如如果有一个Map对象可以用user.get(name)这样的方法来取得值,则可以在EL 中使用来进行存取,另外数组值也可以使用来指定索引取得指定的元素值。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com