




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb开发EL表达式,目标,ExpressionLanguage在JSP2.0中纳入了JSP的标准,它定义了变量存取、运算、隐含对象、函式等内容,配合JavaBean或其它标签库,可以实现较好的逻辑与视图分离之目的。简介ExpressionLanguage使用EL存取属性或.的选择EL隐含物件EL运算符,简介ExpressionLanguage,您可以将一些程序逻辑放入JavaBean中,并配合、与等标签来编写JSP网页,以实现逻辑与视图分开的目的,然而使用JavaBean有其限制,JavaBean配合标签只能用来存取一些简单的属性,而不能用来存取集合中的某个元素,这仍必须要配合Scriptlet才能存取。另外为了要使用一些JSP隐含对象,例如request、response、session等等,您也不免要使用Scriptlet,在JSP中,为了要实现逻辑视图分离的目的,您还必须要搭配使用JSP标准标签函式库(JavaServerPageStandardLibrary,JSTL)或甚至自订标签函式库(customtaglibrary)来实现。,JSPExpressionLanguage本来是包括在JSTL1.0的一个简单的数据存取与运算的语言,在JSP2.0中,则纳入了JSP正式标准之中,成为JSP所支持的特性之一,JSPExpressionLanguage定义了变量存取、运算、隐含对象、函式等内容,配合JSTL的其它标签或流程控制标签,就可以实现更好的逻辑视图分离之目的。,来看个简单的例子,了解JSPExpressionLanguage的基本使用方式,下面这个JSP网页可以计算使用者所请求的两个数字相加结果:elTest.jspELTest简单的EL数据存取与运算:$param.a+$param.b=$param.a+param.b,如果使用页面或直接在网址上传入a与b的值,例如:http:/localhost:8080/myjsp/elTest.jsp?a=10publicclassUserBeanprivateStringname;privateStringid;publicvoidsetName(Stringname)=name;publicvoidsetId(Stringid)this.id=id;publicStringgetName()returnname;publicStringgetId()returnid;,使用下面这个JSP网页来测试它:elTest.jspHello,$userB!Youridis$userBean.ID.,当然,就上面这个例子而言,也可以简单的使用来取得JavaBean的属性值,然而如果JavaBean返回的是一个数组,该如何取得数组当中的某个元素值呢?使用EL的话,您可以藉由运算子来指定所要存取的对象,例如根据索引值来取得返回数组的某个元素,为了测试,先简单的编写下面这个测试用的类别:ArrayTestBject;publicclassArrayTestBeanpublicStringgetTestArray()Stringtest=Justin,momor,Beckyday;returntest;,可以藉由下面这个JSP网页来进行测试:elTest.jsptest0=$arrayTestBean.testArray0test1=$arrayTestBean.testArray1test2=$arrayTestBean.testArray2最后传回的结果是:test0=Justintest1=momortest2=Beckyday,或.的选择,在EL中,您可以使用.运算符来取得JavaBean属性或Map对象中的值,例如若student是个JavaBean,其上有一个name属性,则您可以这么取得该属性的值:$而事实上,您也可以使用运算符来取得值,例如:$studentname在EL中,假设table是一个Map对象,则您可以使用.运算符并在之后接上键值来取得Map中对应的值,例如以title为键值来取得对应的值:$table.title而使用运算符也是可以的,例如:$tabletitle所以归纳来说,使用.运算符时,左边要是个JavaBean或Map对象,而右边必须是JavaBean的属性或是Map的键值。,而使用运算符时,除了左边要是个JavaBean或Map对象,而右边必须是JavaBean的属性或是Map的键值之外,还有更进一步的功能,左边也可以是java.util.List对象或数组,而右边还可以是索引值。举个例子来说,如果有个数组储存于request之中:Stringnames=Justin,caterpillar,momor,Becky;request.setAttribute(nameList,names);,您可以在使用EL时,如下使用来取得数组中的值,例如取得索引1位置的值:$nameList1上例会显示caterpillar的字符串,更进一步的,EL还会将字符串索引值转换为int类型,例如:$nameList2上例会显示“momor”的字符串结果。总结来说,.与运算符可以处理JavaBean及Map对象,而运算子给您更多的功能,可以处理java.util.List或数组,如果中使用包括一个数值,则EL会尝试将之转换为int再进行索引存取。,EL隐含物件,在EL中提供有11个隐含对象,其中除了pageContext隐含对象是个JavaBean对象,对应于javax.servlet.ServletContext类型之外,剩下的隐含对象都是对应于java.util.Map类型,所以使用EL隐含对象,可以让您以字典的方式来取值,例如users.get(Justin)可以使用usersJustin的方式来取得字典Justin所对应的数值。与作用范围相关的EL隐含对象有pageScope、requestScope、sessionScope与applicationScope,它们分别可以取得使用JSP隐含对象pageContext、request、session与application的setAttribute()方法所设定的属性对象,如果不使用EL隐含对象指定作用范围,则预设是取得pageScope的属性。,如果要取得与使用者请求参数数据,则可以使用param或paramValues,举例来说,$param.user其作用相当于,而paramValues则相当于request.getParameterValues(),可与取得页面多选项的值,由于传回的是多个值,您可以使用运算子来指定取得哪个元素,例如$paramValues.hobbies0。如果要取得使用者请求的表头数据,则可以使用header或headerValues隐含对象,例如$headerUser-Agent,headerValues则用来取得同一表头所包括的多值,作用相当于request.getHeaders()方法。,cookie隐含对象可以用来取得使用者的Cookie设定值,虽然我们之前没有说明过Cookie的使用,但是其使用方式类似于session;如果您在Cookie中设定了username属性,则可以使用$cookie.username来取得属性值。initParam可以用来取得JSP网页在web.xml中设定的初始值,例如$initParam.initCount的作用相当于。,pageContext对应于javax.servlet.ServletContext型态,您可以藉由ServletContext来取得request、response、session等对象,从而取得当中的相关讯息,只要是ServletContext中getXXX()方法,就可以用$pageContext.xxx来取得,如果XXX对象有getYYY()方法,则可以用$pageContext.xxx.yyy来取得值,例如$pageContext.request.remoteAddr可以用来取得HttpServletRequest对象,并使用它的getRemoteAddr()方法来取得使用者的IP地址。,EL运算符,使用EL,您可以直接实行一些算术运算、逻辑运算与关系运算,其使用就如同在一般常见的程序语言中之运算,您也可以在安装好Tomcat之后,连接上http:/localhost:8080/jsp-examples/找到一些EL运算的例子。,算术运算子有:加法(+),减法(-),乘法(*),除法(/ordiv)与余除(%ormod)。下面是Tomcat中算术运算的一些例子:,如同在Java语法一样(expression?result1:result2)是个三元运算,expression为true显示result1,false显示result2。,逻辑运算有:and、or、not。一些例子为:,关系运算有:小于Less-than(orgt)、小于或等于Less-than-or-equal(=orge)、等于Equal(=oreq)、不等于NotEqual(!=orne),由英文名称可以得到lt、gt等运算子之缩写词,以下是Tomcat的一些例子:,左边是运算子的使用方式,右边的是运算结果,关系运算也可以用来比较字符或字符串,按字典顺序来决定比较结果,例如:,EL运算子的执行优先级与Ja
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- xx市地下管网建设及设施更新改造工程环境影响报告书
- 中职金融基础试题及答案
- 绿色纺织新材料生产线项目实施方案
- 学校后勤仓库管理员聘用合同5篇
- 企业员工竞业禁止与商业秘密保护合同范本
- 离婚后未成年子女房产赠与监护责任及教育保障协议
- 离婚协议书范本财产分割版
- 石家庄汽车租赁公司节假日租车合同优惠政策
- 幼儿园教学教案设计:迷路原地等老师
- 全国运动会应急预案
- 视觉障碍老人护理指南
- 宠物医院建设方案(3篇)
- 2025年中学生法治素养竞赛题库及答案
- 《“高效办成一件事”2025年度第二批重点事项清单》知识解读
- 2025年飞行器设计与工程师考试试卷及答案
- 2025年三级律师试题题库及答案
- 智能化系统施工方案及技术措施
- 收费员考试题库及答案
- 计算机视觉技术 课件全套 第1-5章 计算机视觉概述-图像噪声
- 智能课件自动生成技术解析
- 2025至2030全球及中国汽车外饰件行业项目调研及市场前景预测评估报告
评论
0/150
提交评论