Java-Web程序设计与案例教程-第5章-EL表达式与JSTL标签_第1页
Java-Web程序设计与案例教程-第5章-EL表达式与JSTL标签_第2页
Java-Web程序设计与案例教程-第5章-EL表达式与JSTL标签_第3页
Java-Web程序设计与案例教程-第5章-EL表达式与JSTL标签_第4页
Java-Web程序设计与案例教程-第5章-EL表达式与JSTL标签_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 EL表达式与JSTL标签 本章内容 EL语法 Cookie的含义和用法 Session的含义和用法 Session的工作原理 个人信息模块的实现 基于MVC的购物车5.1 EL语法EL表达式的语法非常简洁,都是以“$”开始,以“”符号结束的,请看下面的使用示例。上述语句希望从Session中获取key为“cart”的对象,判断其是否为空,如果不为空,就将这个cart对象中的total属性打印到浏览器中。1 5 6 5.1 EL语法5.1.1 EL获取数据5.1.2 EL执行运算5.1.3 EL访问隐含对象5.1.1 EL获取数据EL表达式可以轻松获取4大作用域中的JavaBean的属性

2、,或获取数组、Collection、Map类型集合的数据。EL表达式语句在执行时,会调用pageContext的findAttribute(String key)方法,用标识符名称作为关键字,分别从page、request、session、application 4个域中查找相应的对象,找到则返回相应对象,找不到则返回(空字符串)。语法如下: $作用域对象.属性名称5.1.1 EL获取数据其中,EL表达式中用于代表4大作用域的对象如表5.1所示,表5.1中的对象名称是EL表达式中的关键字,代表要访问的Servlet的作用域对象。EL表达式对象对应作用域使 用 样 例PageScopePage$

3、PageScope.paramNameRequestScopeRequest$ RequestScope.paramNameSessionScopeSession$ SessionScope.paramNameApplicationScopeApplication$ ApplicationScope.paramName表5.1 EL表达式中的4大作用域5.1.2 EL执行运算在EL表达式中可以使用运算符达到我们想要的结果,运算符按作用分为算数运算符、关系运算符、逻辑运算符,还包括一些比较特殊的三元运算符和判空运算符等。1.算术运算符操 作 符使 用 示 例+例如:$6+6,结果为12例如:$4

4、3,结果为1*例如:$4*3,结果为12/ 或 div例如:$ 17 / 5 或 $ 17 div 5 ,结果为3% 或 mod例如:$ 17 % 5 或 $ 17 mod 5 ,结果为2表5.2 EL表达式中的算术运算符5.1.2 EL执行运算2.关系运算符表5.3 EL中的关系运算符操 作 符使 用 示 例或gt例如:$89 或者 $8 gt 9 = 或ge例如:$45=9 或者 $45 ge 9 或lt例如:$49 或者 $4 lt 9 = 或le例如:$9=8 或者 $9 le 8 = 或eq例如:$4=4 或者 $4 eq 4 != 或ne例如:$4!=3 或者 $4 ne 3 5.

5、1.2 EL执行运算3.逻辑运算符4.三元运算符在EL表达式中也存在三元算符,语法格式如下: $条件表达式?结果表达式1:结果表达式25.判空运算符 使用EL判断某个对象是否为空值,可使用empty关键字,语法如下: $empty 表达式表5.4 EL中的逻辑运算符操 作 符使 用 示 例&或and例如:$false & false 或者 $false and false | 或or例如:$true | false 或者 $true or false ! 或not例如:$!true(相当于$false)或者 $not true 5.1.3 EL访问隐含对象EL表达式可以访问一系列对象,一共有1

6、1个,如表5.5所示。序 号隐含对象名称描 述1pageContext对应于JSP页面中的pageContext对象2pageScope代表page域中用于保存属性的Map对象3requestScope代表request域中用于保存属性的Map对象4sessionScope代表session域中用于保存属性的Map对象5applicationScope代表application域中用于保存属性的Map对象6param表示一个保存了所有请求参数的Map对象7paramValues表示一个保存了所有请求参数的Map对象,它对应于某个请求参数,返回的是一个string8header表示一个保存了所有

7、http请求头字段的Map对象9headerValues表示一个保存了所有http请求头字段的Map对象,它对应于某个请求参数,返回的是一个string数组10cookie表示一个保存了所有cookie的Map对象11initParam表示一个保存了所有Web应用初始化参数的Map对象表5.5 EL表达式中的隐含对象5.2 JSTLJSP标准标签库(JSP Standard Tag Library,JSTL)是一个不断完善的开放源代码的JSP标签库,是由Apache的jakarta小组来维护的。JSTL只能运行在支持JSP 1.2和Servlet 2.3规范的容器上,如Tomcat 4.x。在

8、JSP 2.0中也是作为标准支持的。JSTL 1.0发布于2002年6月,由4个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。5.2 JSTL5.2.1 EL获取数据5.2.2 EL执行运算5.2.3 EL访问隐含对象5.2.1 JSTL的安装一个标签库一般由两大部分组成:jar文件包和tld文件。1jar文件包这个部分是标签库的功能实现部分,由Java来实现,此部分不是本文的重点,故详细内容略。2tld文件tld文件是用来描述标签库的,其内容为标签库中所有标签的定义,包括标签名、功

9、能类及各种属性。5.2.1 JSTL的安装如果要使用JSTL,则必须将jstl.jar和 standard.jar文件放到classpath中,这些jar文件全部存在于对应的zip文件中,暗装步骤如下:(1)从Apache的标准标签库中下载jakarta-taglibs-standard-current.zip包,如图5.6所示。(2)解压jakarta-taglibs-standard-1.1.2.zip 包,将lib文件夹下的两个jar文件(standard.jar和jstl.jar文件)加载到工程的编译路径下,不同的IDE的操作方式不同。(3)将标签库描述符文件导入到jsp页面,语法格式

10、如下:5.2.1 JSTL的安装在MyEclipse中,不需要进行上述的操作,因为在MyEclipse创建的Web工程中,会自动引入Java EE开发相关的jar包,其中就包含了standard.jar和jstl.jar文件。在MyEclipse创建Web项目时,会提示用户选择Java EE的版本,如果所选版本为5.0以上,则在工程中会增加Java EE version Libraries,其中会包含jstl-impl.jar文件(见图5.7),standard.jar和jstl.jar的内容就包含在jstl-impl.jar中。但是在其他IDE中,如Eclipse中,就需要手动将上述的jar

11、包添加到工程中。5.2.2 JSTL核心标签核心标签是最常用的JSTL标签。使用JSTL标签前,需要引入对应的标签库,在JSP中引用核心标签库的语法如下:其中,“taglib”是JSP指令,功能是用来引入标签库,“taglib”指令中含有两个属性,分别是“prefix”和“uri”。“prefix”代表使用标签时指定的前缀,该前缀名称用户可自定义,习惯上起名为“c”;“uri”代表了JSTL核心标签库的唯一URI标志。常用的JSTL的核心标签如表5.6所示。5.2.2 JSTL核心标签标 签描 述用于在JSP中显示数据,就像用于保存数据用于删除数据用来处理产生错误的异常状况,并且将错误信息储存

12、起来与我们在一般程序中用的if一样本身只当作和的父标签的子标签,用来判断条件是否成立的子标签,在标签后,当标签判断为false时被执行检索一个绝对或相对 URL,然后将其内容暴露给页面基础迭代标签,接受多种集合类型根据指定的分隔符来分隔内容并迭代输出用来给包含或重定向的页面传递参数重定向至一个新的URL使用可选的查询参数来创造一个URL表5.6 JSTL核心标签5.2.3 JSTL格式化标签JSTL格式化标签可用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下: 例如,日期在Java中是一个非常复杂的内容,如日期的国际化、日期和时间之间的转换、日期的加减运算、日期的展示格式等都

13、是非常复杂的问题,我们一般通过使用JSTL格式化标签将一些结果值转化成需要的格式进行输出。在JSTL库中常用的格式化标签如表5.9所示。5.2.3 JSTL格式化标签表5.9 JSTL格式化标签标 签描 述使用指定的格式或精度格式化数字解析一个代表着数字、货币或百分比的字符串使用指定的风格或模式格式化日期和时间解析一个代表着日期或时间的字符串绑定资源指定地区绑定资源指定时区指定时区显示资源配置文件信息设置request的字符编码5.2.4 JSTL函数JSTL包含一系列标准函数,如表5.12所示,其中大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:函 数描 述fn:contains

14、()测试输入的字符串是否包含指定的子串fn:containsIgnoreCase()测试输入的字符串是否包含指定的子串,大小写不敏感fn:endsWith()测试输入的字符串是否以指定的后缀结尾fn:escapeXml()跳过可以作为XML标记的字符fn:indexOf()返回指定字符串在输入字符串中出现的位置fn:join()将数组中的元素合成一个字符串然后输出fn:length()返回字符串长度fn:replace()将输入字符串中指定的位置替换为指定的字符串然后返回fn:split()将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回fn:startsWith()测试输入字符串是否

15、以指定的前缀开始fn:substring()返回字符串的子集fn:substringAfter()返回字符串在指定子串之后的子集fn:substringBefore()返回字符串在指定子串之前的子集fn:toLowerCase()将字符串中的字母转为小写fn:toUpperCase()将字符串中的字母转为大写fn:trim()移除首位的空白符表5.12 JSTL函数5.3 简易购物商城系统本节将对第4章的案例进行改写,主要针对JSP页面上的显示部分,将使用EL和JSTL替换JSP页面中的JSP标签、JSP表达式、JSP脚本等内容,如图5.23所示。图5.23 简易购物商城首页效果5.3 简易购

16、物商城系统5.3.1 首页模板5.3.2 个人中心5.3.3 全部商品列表5.3.4 购物车5.3.1 首页模板首先对“页头”和“导航”的公用页面进行改写,具体代码如下。在文件中首先使用引入JSTL核心标签库。(1)top.jsp1 2 3 前端商城欢迎您,4 请登录5.3.1 首页模板(2)left.jspf1 2 3 4 5 个人中心6 7 8 9 全部商品10 11 我的购物车12 5.3.2 个人中心当用户已经完善过个人信息后,点击“个人中心”链接,页面跳转至如图5.24所示的页面,我们将原来使用的和标签用JSTL替换。图5.24 个人中心页面效果5.3.2 个人中心创建WebRoot

17、/web/personal文件夹,存放和个人信息相关的页面文件,在该文件夹下创建personalInfo.jsp文件,使用EL表达式来进行数据展示,其中标签之间的代码如下。5.3.2 个人中心1 2 3 4 5 6 7 8 9 10 11 12 13 您还没有完善信息,请完善信息14 15 16 17 18 年龄:19 $personalInfo.age 20 21 22 性别:23 $personalInfo.gender 24 25 26 家庭住址:27 $personalInfo.address 28 29 30 联系方式:5.3.2 个人中心31 $personalInfo.tel 3

18、2 33 34 email:35 $personalInfo.email 36 37 38 毕业院校:39 $personalInfo.graduateSchool 40 41 42 最高学历:43 $personalInfo.highestEducation 44 45 46 专业方向:47 $personalInfo.major 48 49 50 51 52 53 54 5.3.3 全部商品列表当已登录用户点击“全部商品”链接时,系统会展示如图5.25所示的商品列表结果页,每个商品都有一个“加入购物车”的链接。图5.25 全部商品列表效果5.3.3 全部商品列表创建WebRoot/web/auction文件夹

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论