web第9章使用JSTL标签库.ppt_第1页
web第9章使用JSTL标签库.ppt_第2页
web第9章使用JSTL标签库.ppt_第3页
web第9章使用JSTL标签库.ppt_第4页
web第9章使用JSTL标签库.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第9章 使用JSTL标签库,教学目标 了解JSP定制标签库的基本概念。 掌握在JSP中使用定制标签库的方法。 掌握EL表达式语言的基本语法、隐含对象的使用。 掌握JSTL核心标签库的使用。 了解JSTL中SQL标签库的使用。 参考书目: Core JSTL: Mastering the JSP Standard Tag Library By David M. Geary Publisher: Prentice Hall PTRPub Date: November 26, 电子书:JSTL.CHM,9.1 JSP定制标签 在JSP页面中使用定制标签而不是在JSP页面中使用脚本,会有以下好处: 标签可重用,可以节省开发和测试时间。 可以对标签定义属性,通过给标签的属性赋值获得应用上很大的灵活性。 定制标签可以访问JSP页面中的所有的隐含对象,如:page、request、response、out等。 定制标签可以嵌套,这样可以在JSP页面中进行负责的交互。 定制标签简化了JSP页面的可读性,大大提高了页面的可维护性。,一个定制标签库通常由以下几个组件构成: 一个或多个标签处理器(Tag Handler)。标签处理器是一个必须实现javax.servlet.jsp.tag.Tag接口的Java类,定制标签的功能由它来实现。 标签库描述TLD文件(Tag Library Descriptor File)。后缀为.tld的XML文件,它包含了定制标签的元信息。例如:定制标签的名称、属性、标签处理器类名等信息全部包含在这个文件中并由JSP容器读取。,应用程序部署描述文件(web.xml)。当Web应用程序需要某个定制标签库时,需要在web.xml文件中加入对定制标签库TLD文件的引用。 在JSP页面中定制标签库的声明。在JSP页面中包含一个或多个标签库的包含指示,以及在JSP页面中对标签库所需要的调用。,9.1.2 如何使用JSP定制标签库 要使用JSP定制标签,一般需要以下几个步骤。 1. 在web.xml文件中添加对定制标签库TLD文件的引用 这主要是利用元素来说明的。元素包含两个子元素: 。指定TLD文件所对应的URI。 。指定TLD文件的存放位置。,2. 在JSP页面中用taglib指令包含对要使用的定制标签的引用 在JSP内使用自定义标签之前,必须先在JSP内使用JSP的标准指令taglib来声明TLD所在的位置。taglib指令包含两个属性: uri。指定定制标签的TLD所在的位置。这里的uri属性应当与web.xml文件中声明的元素的值相同。 prefix。在JSP内使用定制标签的前缀字符串。,免费的且受到广泛应用的定制标签库有:Struts Framwork标签库、Jakarta Taglibs、JSP标准标签库(JSTL,JSP Standard Tag Library),9.2 JSTL 1.0 JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库。 JSTL所提供的标签函数库从功能上主要分为四大类,如表9-1所示。,JSTL 1.0中,又分EL(表达式语言,Expression Language)和RT(JSP请求时表达式)两种函数库。 表达式语言标签库完全使用Expression Language,使用简单、强烈建议大家使用EL函数库。 RT标签库则由于使用JSP脚本,使用较麻烦,不推荐使用。,9.2.1 安装使用JSTL 1.0 在/taglibs/standard/下载jakarta-taglibs-standard-1.1.2.zip,将解压后的jstl.jar和standard.jar放在tomcat/lib目录下即可,无需再配置应用程序的web.xml。 在jsp页面中用taglib指令导入标签库,就可以在页面中使用这些标签。 例子:HelloJSTL.jsp,9.3 EL语言 EL全名为Expression Language,它是JSTL 1.0为方便存取数据所自定义的语言,使用起来非常简洁。 所有EL表达式都以“$”起始、以“”结尾。,1. “.”和“ ”运算符 EL表达式以“.”和“ ”两种运算符来存取数据。下面的两个EL表达式: $sessionScope.user.sex $sessionScope.user“sex“ 是等价的。,2. EL变量 EL变量的存取方法很简单,例如$user,即取出某一作用范围中名称为user的变量。,3. 自动转变类型 EL除了方便存取之外,还能够自动完成类型转换,例如:$param.count + 20 表示从用户请求参数中读取count参数,自动将count参数从String类型直接转换为int类型,并加上20。 它的作用与下面的JSP句子等价: String str_count = request.getParameter(“count“); int count = Integer.parseInt(str_count); count = count + 20;,9.3.2 EL隐含对象 EL隐含对象总共有11个,见表9-3。 1. 属性(Attribute)与范围(Scope) :pageScope、requestScope、sessionScope和applicationScope,它们的作用基本上和JSP的pageContext、request、session和application的隐含四个对象一样。不同的是,这四个隐含对象只能用来存取范围属性,即相当于JSP中的getAttribute(String name)方法,却不能取得其他相关信息。,2. 与存取用户输入有关的隐含对象 $等价于String name=request.get Parameter(“name“); $paramValues.favors 等价于String favors= request.getParameterValues (“favors“); 例子: Param.html Param.jsp,9.3.3 EL运算符 1. EL算术运算符 EL算术运算符主要有五个,见表9-5。 2. EL关系运算符 EL关系运算符有六个,见表9-6。 3. EL逻辑运算符 EL逻辑运算符有三个,见表9-7。,4. EL 其他运算符 EL除了上述三大类的运算符之外,还有下列几个重要的运算符: (1)Empty运算符。Empty运算符主要用来判断值是否为null或空的,例如$ empty param.userName , 如果用户请求参数userName为null,则返回true,否则返回false。 (2)条件运算符。与Java语言或者C语言的条件运算符相似: $ A ? B : C 即,当A为true时,返回B;否则返回C。 (3)括号运算符。括号运算符主要用来改变执行优先级,例如:$ A * (B+C) 。 EL运算符的优先级运算规则和Java语言或者C语言的规则相似。 例子:ELOperator.jsp,9.4 核心标签库 JSTL核心标签库(Core)中的定制标签按作用主要有,输入输出、流程控制、迭代操作和URL操作。详细的分类如表9-8所示。 要在JSP中使用JSTL中的核心标签库,必须使用指令,并且设定prefix和uri的值,例如: 这样,在当前JSP页面中就可以使用JSTL核心库中的标签了。,9.4.1 表达式操作 包含、和四个标签。 标签 (1)没有体(body)内容: (2)有体内容: default value 其中,该标签的属性情况如下: value。需要显示出来的值,必备属性。 default。如果value的值为null,则显示default的值,可选属性。 escapeXml。是否转换特殊字符,如 转换成 ,可选属性。,2. 标签 用来将变量保存到JSP的特定作用范围中或是对JavaBean的属性进行设置。标签的语法主要有四种形式: (1)将value的值储存至作用范围为scope的名称由varName指定的属性之中 var。指定要绑定的属性变量的名称。 value。指定要绑定的属性变量的值。 scope。指定由var命名的属性变量的JSP作用范围。,例如, 其作用等价于: session.setAttribute(“sayHello“,“Helloworld,JSTL“);,(2)将本体内容的数据储存到作用范围为scope的名称由varName 指定的属性之中。 本体内容 例如, Helloworld,JSTL 等价于: application.setAttribute(“sayHello“,“Helloworld,JSTL“);,(3)设置JavaBean对象的属性,由target指定JavaBean的名称,由property指定属性的名称。 target。指定要对属性值进行设置的JavaBean的名称。 property。指定由target指定的JavaBean对象的属性的名称。 例如, 它的作用等价于: =“Scott“; 或者 ,(4)将本体内容的数据储存到target 对象的属性中。 本体内容 例如, Scott 它的作用等价于: =“Scott“;或者 ,3. 标签 标签主要用来删除保存到各个作用范围中的属性,其语法为: var。指定要删除的属性变量的名称,必备属性。 scope。指定由var指定的属性变量的JSP作用范围,可选属性,默认为page作用范围需要特别说明的是:的var属性是必须的,即必须指定要删除的属性名称,scope则是可选的。,例子:set_remove.jsp,4. 标签 标签主要用来处理JSP页面中产生的异常情况,并且可以将异常信息保存起来。标签的语法为: 可能产生异常的部分 属性var。标签的属性var是用来储存错误信息的变量。 例子:catch.jsp,9.4.2 迭代操作 1. 标签 标签作为循环控制标签,它可以将集合(Collection)中的成员循序浏览一遍。当设定条件符合时,就会持续重复执行的本体内容。,数字范围迭代 这种迭代方法的语法为: 本体内容 ,其中, begin和end属性。分别指定迭代索引的初始值以及迭代索引的终止值。另外,begin、end这两个属性既可以是静态整数值,也是可以得出整数值的表达式。当使用 在整数范围内进行迭代时,begin和end这两个属性是必需的,而其他所有属性都是可选的。 step属性。指定迭代的步长。它也必须是整数值。它指定每次迭代后索引的增量。默认步长缺省为1。 var属性。如果指定了var属性,那么将会创建一个带有指定名称的并限定了作用域的属性变量,并将每次迭代的当前索引值赋给该变量。这一限定了作用域的变量具有嵌套式可视性,只可以在 标记体内对它进行访问。,例子:见书上P226,程序清单9-9。,集合迭代 在用 标签对集合的成员进行迭代时,必须指定一个集合。这种应用的语法为: 本体内容 ,items属性可以指定的Java类型见表9-9 。 在对items属性指定的集合进行迭代时,可以将每次迭代到的对象存放到由var指定的属性上。 例子:forEach.jsp 需要注意的是必须把customers加入到某一个作用范围中,这里绑定到pageContext对象上。这样才能用标签遍历。,2. forToken标签 除标签以外,core库还提供了另一个迭代标签:标签。 标签的语法为: body content ,标签的特点在于items和delims两个属性:items的内容必须为字符串;而delims是用来分割items中定义的字符串的字符。 例子:TokenExa.jsp,9.4.3 流程控制 流程控制分类中包含四个标签:、和。 标签的语法形式有两种。 (1)没有本体(body)内容: ,(2)有本体内容: 本体内容 test属性。用来指定测试条件,计算类型应为boolean,必备属性。如果表达式的结果为true,则执行本体内容,false则相反。 var、scope属性。如果需要保存测试属性的计算结果,则需要这两个可选属性。,2. 、标签 标签是和标签标签共同组织在一起的,它的作用与Java语言的switch语句相同。其中标签是标签和标签的父标签,,语法为: 本体内容1 . . . 本体内容N 本体内容 ,9.4.4 URL操作 JSTL包含三个与URL操作有关的标签,它们分别为:、和。它们主要的功能是:用来将其他文件的内容包含起来、网页的导向,还有url的产生。,1. 标签 标签可以把其他静态或动态文件包含至本身JSP网页。 语法为 本体内容 或 本体内容 其中,,url属性。指定被包含文件的地址,必选属性。 context属性。同一WEB容器下,其他web应用的上下文名称,必须以“/“开头。可选属性。 varReader属性。保存被包含文件的内容(Reader类型对象)。 charEncoding属性。被包含文件内容的编码格式。 var、scope属性。同前。 标签中,url属性是必须的,它用来设定被包含网页的地址。它可以为绝对地址或是相对地址,使用绝对地址的例子: 标签就会把/cnn.rss的内容加到网页中。,将包含进的资源存储到属性变量 标签提供var和scope属性。当var属性存在时,虽然同样会把其他文件的内容包含进来,但是它并不会输出至网页上,而是以String的类型储存至var中。,使用子标签 在标签的本体内容中使用子标签,它的功用主要是可以将参数传递给被包含的文件,它有两个属性name和value。 例子: import.jsp imported.jsp,2. 标签 标签主要用来产生一个URL。语法为 (1)没有本体内容: (2)本体内容代表查询字符串(Query String)参数: 标签 ,3. 标签 标签可以将客户端的请求从一个JSP网页

温馨提示

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

评论

0/150

提交评论