资源描述
网网络编程程第第10章章JSTL与自定义标签与自定义标签1主主题章节内容章节内容本章小结本章小结课堂测试课堂测试课后习题课后习题课外读物课外读物2章章节内容内容10.0引言引言10.1JSPStandardTagLibrary10.2设置设置JSTL运行环境运行环境10.3使用核心标签使用核心标签10.4I18n与国际化与国际化 10.5格式化格式化10.6函数标签函数标签10.7JSTL中的中的SQL标签标签10.810.8 JSTL与与XML10.9自定义标签自定义标签310.0引言引言在在JSP2.0中,通过结合使用中,通过结合使用JSTL和和EL,可以开发,可以开发出没有出没有Scriptlets的的JSP,这使得,这使得JSP的开发非常简的开发非常简单,非单,非Java程序员都能胜任。程序员都能胜任。另外,通过使用另外,通过使用JSTL可以使编程的代码量大大减可以使编程的代码量大大减少。少。JSPStandardTagLibrary(简称简称JSTL),是一套预,是一套预先定义好、协助程序设计人员简化先定义好、协助程序设计人员简化JSP网页制作的网页制作的标签函数库,规格包含了各种网页运作所需的运用,标签函数库,规格包含了各种网页运作所需的运用,例如循环、流程控制、输入例如循环、流程控制、输入/出、文本格式化,甚至出、文本格式化,甚至XML文件处理及数据库访问操作均为其涵盖范围。文件处理及数据库访问操作均为其涵盖范围。为了减少为了减少JSP中的脚本,中的脚本,JavaEE规范允许开发人规范允许开发人员自定义标签。员自定义标签。410.1JSPStandardTagLibraryJSTL的优点:的优点:在应用程序服务器之间提供了一致的接口,最大程在应用程序服务器之间提供了一致的接口,最大程度地提高了度地提高了web应用在各应用服务器之间的移植。应用在各应用服务器之间的移植。简化了简化了JSP和和web应用程序的开发。应用程序的开发。以一种统一的方式,减少了以一种统一的方式,减少了JSP中的中的Scriptlets的的代码量,可以达到没有任何代码量,可以达到没有任何Scriptlets代码的程序。代码的程序。运行运行JSP设计工具与设计工具与web应用程序开发的进一步集应用程序开发的进一步集成,相信不久就会有支持成,相信不久就会有支持JSTL的的IDE开发工具出现。开发工具出现。5JSTL标签种类标签种类说说明明核心标签核心标签包含包含JSTL核心操作所需的标签,例如数据核心操作所需的标签,例如数据输出、循环流程控制以及输出、循环流程控制以及URL操作等操作等i18n国际化格式标签国际化格式标签进行数值与日期数据格式化、国际化资源网进行数值与日期数据格式化、国际化资源网页设定所需的标签页设定所需的标签SQL标签标签运用运用SQL与操作资库所需的标签与操作资库所需的标签XML标签标签剖析剖析XML文件所需的标签文件所需的标签函数标签函数标签包含字符串处理与其它特定功能之包含字符串处理与其它特定功能之JSTL标标签签610.2设设置置JSTL运行运行环环境境下载下载JSTL,下载地址:下载地址:下载的下载的JSTL以以jar包形式存在,直接将其保存到包形式存在,直接将其保存到Tomcat网站服务目录下的文件夹网站服务目录下的文件夹WEB-INFlib当中。当中。用用WINRAR软件打开软件打开jar包,将其中包,将其中META-INF文件夹中文件夹中的几个主要标签配置文件的几个主要标签配置文件(c.tld、fmt.tld、fn.tld、sql.tld、x.tld)保存在保存在WEB-INF文件夹中(或其子目录文件夹中(或其子目录里)。里)。重新启动重新启动Tomcat。7使用使用JSTL之前,之前,必须必须引用引用taglib指令指令声明网页声明网页所要使所要使用的用的标签种类标签种类。prefix代表代表标签种类标签种类的的前缀词前缀词uri代表代表标签标签的的URI8网页中可直接通过网页中可直接通过uri引入配置在引入配置在WEB-INF中的中的tld文件,如觉得麻烦,文件,如觉得麻烦,也可通过也可通过web.xml文件设置一个标签文件的映射名称。文件设置一个标签文件的映射名称。在在WEB-INFWEB-INF下建立下建立web.xmlweb.xml文件中添加如下语句:文件中添加如下语句:/WEB-INF/c.tld/WEB-INF/c.tld 在在.jsp.jsp的前面加入如下语句的前面加入如下语句%taglib prefix=c uri=%I18N格式标签、格式标签、SQL标签库、标签库、XML标签库、函数标签库的具体内容请参标签库、函数标签库的具体内容请参见见标签前前缀词以及以及uriJSTL标签种类标签种类前前缀缀词词uri核心标签核心标签ci18n国际化格式标国际化格式标签签fmtSQL标签标签sqlXML标签标签xml函数标签函数标签fn1010.3使用核心使用核心标签分分类类标标签签说说明明一般行为一般行为out将指定的数据内容输出至网页上将指定的数据内容输出至网页上set将特定的数据内容储存至指定变量将特定的数据内容储存至指定变量remove移除指定变量的数据内容移除指定变量的数据内容catch补捉程序例外补捉程序例外URL处理处理import载入外部文件载入外部文件url设定一个超级链接地址设定一个超级链接地址redirect转向网页转向网页param设定地址参数设定地址参数流程控制流程控制ifif流程判断式流程判断式When/otherwise/choose多重选择判断式多重选择判断式循环循环forEach对象集合迭代列举操作对象集合迭代列举操作forTaokens解释以标记符号分隔字符串解释以标记符号分隔字符串1110.3使用核心使用核心标签10.3.1存取网页数据存取网页数据10.3.2与与标签标签10.3.3标签标签10.3.4建立建立URL10.3.5标签标签10.3.6标签标签载入外部文件载入外部文件10.3.7标签标签重新定向网页重新定向网页10.3.8流程控制流程控制10.3.9迭代迭代-运行循环运行循环1210.3.1存取网存取网页数据数据语法语法1:未包含:未包含主体主体(body)语法语法2:包含:包含主体主体(body)defaultvalue13属性设定属性设定属属性性动动态态类类型型说说明明value是是Object输出的内容输出的内容escapeXml是是boolean是否转换特殊字符是否转换特殊字符default是是Object当输出结果为当输出结果为null,指定默认值,指定默认值14escapeXmlescapeXml用来指定是否转换特殊字符,用来指定是否转换特殊字符,在默认的在默认的情形下,会将某些特殊字符,例如情形下,会将某些特殊字符,例如、&等等等等。字字符符EntityCode>&'"1510.3.2与与标签语法语法1:将将value值储存至范围变量值储存至范围变量varName语法语法2:将本体将本体(body)内容设定储存至范围变量内容设定储存至范围变量varNamebodycontent语法语法3:将将value值储存至目标对象值储存至目标对象target的属性的属性propertyName语法语法4:将本体将本体(body)内容储存至目标对象内容储存至目标对象target的属性的属性propertyNamebodycontent16属性设定属性设定属属性性动动态态类类型型说说明明value是是Object设定值设定值var否否String储存设定值的变量名称储存设定值的变量名称scope否否Stringvar的范围的范围target是是Object属性将被设定的目标对象属性将被设定的目标对象property是是String目标对象的属性目标对象的属性17用来用来移除某移除某个范围变量个范围变量的內容值的內容值1810.3.3标签标签可以用来取得错误的信息,同时进行适当的标签可以用来取得错误的信息,同时进行适当的处理,避免网页出现无法理解的内容处理,避免网页出现无法理解的内容。nested actionsnestedactions为某一段可能发生错误的网页内容,为某一段可能发生错误的网页内容,var用用来储存错误发生时,与错误有关的信息内容。来储存错误发生时,与错误有关的信息内容。1910.3.4建立建立URL标签在在JSP网网页动态指定指定一个网址字符串一个网址字符串。语法法1:无本体内容无本体内容语法法2:在本体内容指定数字符串在本体内容指定数字符串subtags20URL属性属性value代表所要设定的网页资源位置代表所要设定的网页资源位置。context用来指定一个外部资源用来指定一个外部资源。var代表一个变量,如果有指定,代表一个变量,如果有指定,URL资源的内容将被输出至指定的变资源的内容将被输出至指定的变量。量。scope则是变量的范围,则是变量的范围,var变量只在这个范围里面有效变量只在这个范围里面有效。属属性性动态动态类类型型说说明明value是是String指定操作的指定操作的URLcontext是是String网站外部内容的设定值,一个网站外部内容的设定值,一个URL资源的相对位置资源的相对位置var否否String输出的范围变量名称输出的范围变量名称scope否否Stringvar的的范围范围。2110.3.5标签语法语法1:將:將属性属性值指定給值指定給value属性属性语法语法2:將:將属性属性值指定給值指定給本体本体內容內容parametervalue22属性属性name属性必须属性必须有值,有值,否则标签将不会否则标签将不会有任何有任何操作操作。属属性性动动态态类类型型说说明明name是是String参数名称参数名称value是是String参数值参数值23使用使用标签标签放在放在c:url本体本体內容內容当中当中,可用,可用来设定连来设定连接接所要所要传递传递的的参数参数內容:內容:所指定的参数值所指定的参数值firstPara,与,与URL字符串一同被字符串一同被送出:送出:urlstring?FirstPara=1234562410.3.6标签载入外部文件入外部文件语法语法1:载入数据内容直接嵌入标签或是输出成为载入数据内容直接嵌入标签或是输出成为String对象对象optionalbodycontentforsubtags语法语法2:载入数据内容直接输出成载入数据内容直接输出成Reader对象对象bodycontentwherevarReaderisconsumedbyanotheraction25属性属性url代表外部代表外部资源资源所在位置的所在位置的相对相对或是或是绝对绝对URL。null或是空值都或是空值都将产生一个将产生一个JspException例外。例外。url其他的其他的属性属性都可以省略。都可以省略。属属性性动动态态类类型型说说明明url是是String载入资源的载入资源的URLcontext是是String网站外部内容的设定值网站外部内容的设定值var否否String输出的范围变量名称输出的范围变量名称scope否否Stringvar的范围的范围charEncoding是是String载入文件的字符编码载入文件的字符编码varReader否否String输出的输出的Reader对象名称对象名称2610.3.7标签标签重新定向网重新定向网页页语法语法1:无主体无主体(body)内容内容语法语法2:指定搜寻字符串参数的主体内容指定搜寻字符串参数的主体内容subtagsurl参数代表所要转向的参数代表所要转向的URL地址,当你在网页当中设定地址,当你在网页当中设定标签,并且指定其标签,并且指定其url参数,网页运行后,将转参数,网页运行后,将转向此向此url所代表的目标地址所代表的目标地址。2710.3.8流程控制流程控制核心标签中的核心标签中的if、choose和和when,提供相当于程序,提供相当于程序语言流程控制的功能语言流程控制的功能。与与Java中的中的if语句相同语句相同。则被运用于需要进行多重判断的场合,则被运用于需要进行多重判断的场合,它本身是一个框架,判断内容则由它本身是一个框架,判断内容则由和和两个标签完成两个标签完成。28语法语法1:无本体内容无本体内容语法语法2:包含本体内容包含本体内容bodycontent29属性属性test是最重要的是最重要的属性属性,为标签为标签的的条件判断式条件判断式。var用用来储存判断式来储存判断式的的输出输出結果結果 属属性性动动态态类类型型说说明明test是是boolean载入资源的载入资源的URL var否否String输出判断结果的范围变量名称输出判断结果的范围变量名称 scope否否Stringvar的范围的范围 30、与与语法语法-body content(and subtags)与与构成构成标签标签內容內容区块区块。语法语法-body content语法语法-conditional block3110.3.9迭代迭代-运行循运行循环环语法语法1:迭代对象集合内容。迭代对象集合内容。bodycontent语法语法2:迭代特定次数。迭代特定次数。bodycontent32属性属性var用来指定网用来指定网页页当中所要迭代的当中所要迭代的对对象象。items则则是每一次迭代所取得的是每一次迭代所取得的对对象内容象内容。varStatus为为目前目前对对象的相关内容信息象的相关内容信息。begin、end以及以及step则则是相关的属性,分是相关的属性,分别别代表迭代的开始、代表迭代的开始、结结束以束以及区及区间间,这这三个三个值值相互影响,相互影响,设设定不正确可能定不正确可能导导致程序流程的运行致程序流程的运行错错误误。属属性性动动态态类类型型说说明明var否否String储存指定的迭代成员储存指定的迭代成员items是是集合对集合对象象迭代的集合对象迭代的集合对象varStatus否否String储存指定迭代成员的状态内容储存指定迭代成员的状态内容begin是是int迭代的开始值迭代的开始值end是是int迭代的结束值迭代的结束值step是是int每次迭代的间隔值每次迭代的间隔值33标签主要针对字符串类型的数据作设计,标签主要针对字符串类型的数据作设计,它可以解析一段字符串当中,以特定符号所分隔的字符串成它可以解析一段字符串当中,以特定符号所分隔的字符串成员员。body content3410.4I18n与国与国际化化分分类类标标签签说说明明国际化设定国际化设定setLocale设定所使用的语言文化区域设定所使用的语言文化区域requestEncoding指定编码方式指定编码方式资源文件系资源文件系结结bundle指定所要使用的资源文件名称指定所要使用的资源文件名称setBundle设定预设的资源文件设定预设的资源文件message取得资源文件的内容取得资源文件的内容数字日期格数字日期格式式timeZone转换时区格式转换时区格式setTimeZone储存时区信息储存时区信息formatNumber格式化数值格式化数值parseNumber解释特定数值格式解释特定数值格式formatDate格式化日期格式化日期parseDate解释特定日期格式解释特定日期格式3510.4I18n与国与国际化化10.4.1设置区域设置区域10.4.2指定编码指定编码10.4.3存取存取i18n区域化内容区域化内容3610.4.1设置区域置区域value属性是使用属性是使用标签唯一不可省略的属标签唯一不可省略的属性项目,它代表此标签所要指定的区域代号性项目,它代表此标签所要指定的区域代号。value由两个小写字母所组成的语言代码由两个小写字母所组成的语言代码(例如例如zh)所表示,所表示,另外,它还可以加上同样由两个字母所组成的国家代码,这另外,它还可以加上同样由两个字母所组成的国家代码,这两者之间以两者之间以-或是或是_作连接。作连接。3710.4.2指定指定编码 value属性代表所要指定的属性代表所要指定的编码方式字符串,例如方式字符串,例如设为GB2312可以可以让网网页正确的正确的处理中文乱理中文乱码的的问题。3810.4.3存取存取i18n区域化内容区域化内容支持国际间不同文化区域语系的网页功能,是通过提供支持国际间不同文化区域语系的网页功能,是通过提供其关联的资源文件来达到目的其关联的资源文件来达到目的。用来指定所要使用的资源文件名称用来指定所要使用的资源文件名称。设定默认的资源文件,当指定的资设定默认的资源文件,当指定的资源文件不存在时,直接套用默认的资源文件源文件不存在时,直接套用默认的资源文件。用来取得资源文件的内容,将其显示用来取得资源文件的内容,将其显示在网页上在网页上。39I18n国际化网页国际化网页40 body content属属性性动动态态类类型型说说明明basename是是String资源文件的名称,不包含文件本身的扩展名资源文件的名称,不包含文件本身的扩展名prefix是是String指定指定标签当中,标签当中,key值的预设值的预设前缀前缀41语法语法1:无本体内容无本体内容语法语法2:包含指定信息参数的本体内容包含指定信息参数的本体内容subtags42属性属性属属性性动动态态类类型型说说明明key是是String所要取得的资源文件内容所要取得的资源文件内容key值值bundle是是LocalizationContext资源文件资料来源资源文件资料来源var否否String用来储存信息内容的变量名称用来储存信息内容的变量名称 scope否否String变量变量var的有效范围的有效范围43标签标签的主要功能,便是用来的主要功能,便是用来设设定所要定所要读读取取的的预设资预设资源文件,除了源文件,除了basename,var用以指定用以指定变变量的名量的名称,此称,此变变量量储储存所要存所要读读取的取的资资源文件内容源文件内容。资资源文件是一种源文件是一种扩扩展名展名为为properties的文本文件,可以利用的文本文件,可以利用notepad等等简简单单的文字的文字编辑编辑器器进进行行编辑编辑,其内容由,其内容由键键/值值(key/value)格格式的数据所式的数据所组组成成标签标签指定所要取得的指定所要取得的键键,取出,取出对应对应的的值值(value)。4410.5格式化格式化10.5.1设置时区设置时区10.5.2格式化数字格式化数字10.5.3格式化日期格式化日期日期、日期、时间时间、货币货币等等数据数据,不同的,不同的地区地区有不同的有不同的显示显示方式。方式。通过格式化标签的设定,网页当中的数据内容,可以随着不同的文化区通过格式化标签的设定,网页当中的数据内容,可以随着不同的文化区域特性,而改变其显示的数据格式域特性,而改变其显示的数据格式。设定时区的设定时区的和和。数字数字格式化格式化标签标签有有和和。日期时间显示日期时间显示格式格式化标签有化标签有和和。4510.5.1设置置时区区语法法bodycontent针对标签当中的本体内容,进行格式化,其唯一的针对标签当中的本体内容,进行格式化,其唯一的属性是属性是value,代表使用的时区,使用这个标签,时区设定的影响将,代表使用的时区,使用这个标签,时区设定的影响将只对本体内容有效只对本体内容有效。语法语法var属性用来储存时区的设定,当然这个属性是选择性的,而属性用来储存时区的设定,当然这个属性是选择性的,而scopde则是变量的有效范围。则是变量的有效范围。4610.5.2格式化数字格式化数字语法语法1:无本体内容无本体内容47语法语法2:指定格式化数值的本体内容指定格式化数值的本体内容numericvaluetobeformatted48属性属性属属性性动动态态类类型型说说明明value是是String/Number被格式化的数值被格式化的数值var否否String储存格式化数值的范围变量储存格式化数值的范围变量scope否否String变量范围变量范围type是是String指定数值被格式化成为数字、货币或是百分比指定数值被格式化成为数字、货币或是百分比形式形式pattern是是String自定义格式化样式自定义格式化样式currencyCode是是StringISO4217货币代码,搭配格式货币代码,搭配格式(type)作显示,只作显示,只有设定为货币格式的时候,这个值才有意义有设定为货币格式的时候,这个值才有意义currencySymbol是是String货币符号,搭配格式货币符号,搭配格式(type)作显示,只有设定为作显示,只有设定为货币格式的时候,这个值才有意义货币格式的时候,这个值才有意义属属性性动动态态类类型型说说明明groupingUsed是是boolean指定是否格式化输出包含分隔符指定是否格式化输出包含分隔符maxIntegerDigits是是int格式化输出结果当中,整数字数部份显示格式化输出结果当中,整数字数部份显示的最大位数的最大位数minIntegerDigits是是int格式化输出结果当中,整数字数部份显示格式化输出结果当中,整数字数部份显示的最小位数的最小位数maxFractionDigits是是int格式化输出结果当中,整数字数部份显示格式化输出结果当中,整数字数部份显示的最大位数的最大位数minFractionDigits是是int格式化输出结果当中,整数字数部份显示格式化输出结果当中,整数字数部份显示的最小位数的最小位数49属性属性说说明明分分别别代表所要代表所要进进行格式行格式处处理的数理的数值值,储储存格式化存格式化结结果的果的变变量以及可指定量以及可指定变变量范量范围围的的scope。type指定格式化的指定格式化的样样式式,number、currency以及以及代表指定的数据将以代表指定的数据将以数数值值、货币货币或是百分比的形式或是百分比的形式进进行格式化,行格式化,pattern则则是是让让用用户户能能够够自行自行指定格式化的指定格式化的样样式。式。currencyCode与与currencySymbol是用来表示是用来表示货币货币数据的数据的专专用属性,用属性,与与type属性当中的属性当中的货币货币(currecy)格式搭配使用,格式搭配使用,currencyCode为为ISO4217所所规规范的范的货币货币代代码码,如美金的,如美金的USD、或是大、或是大陆陆人民人民币币的的CNY等等等。等。currencySymbol则则代表代表货币货币的的显显示符号如示符号如$。groupingUsed指定是否格式化的数字以分隔符作指定是否格式化的数字以分隔符作显显示示。maxIntegerDigits、minIntegerDigits、maxFractionDigits和和minFractionDigits,均用以来控制数,均用以来控制数值值的的显显示位数,前两个指定一个示位数,前两个指定一个数数值值当中,最大与最小可当中,最大与最小可显显示的位数,后两个示的位数,后两个则则是指定小数的位数。是指定小数的位数。50语法语法1:无本体内容无本体内容51语法语法2:包含本体内容包含本体内容numericvaluetobeparsed5210.5.3格式化日期格式化日期53属性属性属属性性动动态态类类型型说说明明value是是java.util.Date格式化的日期或是时间数据格式化的日期或是时间数据type是是String指定是否格式化日期、时间或是两者指定是否格式化日期、时间或是两者 dateStyle是是String预先定义的日期格式化样式预先定义的日期格式化样式timeStyle是是String预先定义的时间格式化样式预先定义的时间格式化样式pattern是是String自定义格式化样式自定义格式化样式timeZone是是String/java.util.TimeZone显示格式化之时间数据的时区显示格式化之时间数据的时区var是是String储存格式化结果的变量储存格式化结果的变量scope否否String变量范围变量范围5410.6函数函数标签标签10.6.1字符串比对字符串比对10.6.2获取子字符串获取子字符串10.6.3调整字符串调整字符串10.6.4其他函数其他函数分分类类标标签签说说明明字符串比对字符串比对contains查看是否字符串当中包含指定的子字符串查看是否字符串当中包含指定的子字符串containsIgnore-Case在忽略大小写的情形下,检视是否字符串当中包含在忽略大小写的情形下,检视是否字符串当中包含指定的子字符串指定的子字符串endsWith查看是否字符串以指定的字尾作结束查看是否字符串以指定的字尾作结束startsWith查看是否字符串以指定的前缀开始查看是否字符串以指定的前缀开始indexOf返回字符串之间第一个符合指定子字符串的索引值返回字符串之间第一个符合指定子字符串的索引值获取子字符获取子字符串串substring返回字符串当中指定区域的子字符串返回字符串当中指定区域的子字符串substringAfter返回字符串当中指定字符串后面的子字符串返回字符串当中指定字符串后面的子字符串substringBefore返回字符串当中指定字符串之前的子字符串返回字符串当中指定字符串之前的子字符串分分类类标标签签说说明明字符串调整字符串调整toLowerCase将字符串中所有的字符转换成为小写将字符串中所有的字符转换成为小写toUpperCase将字符串中所有的字符转换成为大写将字符串中所有的字符转换成为大写trim移除字符串两端的空白移除字符串两端的空白replace以指定的子字符串取代部份字符串以指定的子字符串取代部份字符串split分割字符串成为一个字符串数组分割字符串成为一个字符串数组join将一个字符串数组以指定的符号合并成为字符串将一个字符串数组以指定的符号合并成为字符串其它其它escapeXml转换跳脱字符转换跳脱字符length返回字符串的字符数目返回字符串的字符数目5510.6.1字符串比字符串比对语法语法containsfn:contains(string,substring)containsIgnoreCasefn:containsIgnoreCase(string,substring)属性属性参数参数类型类型说明说明stringString函数所要比对的字符串函数所要比对的字符串substringString用以比对的子字符串用以比对的子字符串语法语法containsfn:contains(string,substring)containsIgnoreCasefn:containsIgnoreCase(string,substring)属性属性参数参数类型类型说明说明stringString函数所要比对的字符串函数所要比对的字符串substringString用以比对的子字符串用以比对的子字符串56语法语法endsWithfn:endsWith(string,suffix)-booleanstartsWithfn:startsWith(string,prefix)-boolean属性属性参参数数类类型型说说明明stringString函数所要比对的字符串函数所要比对的字符串Suffix/prefixString用以比对的前缀或字尾用以比对的前缀或字尾57indexOfindexOf提供取得字符串当中,某个子字符串第提供取得字符串当中,某个子字符串第一次于其中出现的位置索引,索引值以一次于其中出现的位置索引,索引值以0为基础为基础。语法语法fn:indexOf(string,substring)5810.6.2获取子字符串取子字符串语法语法fn:substring(string,beginIndex,endIndex)属性属性参参数数类类型型说说明明stringString函数所要操作的字符串函数所要操作的字符串beginIndexint获取子字符串的起始索引值获取子字符串的起始索引值endIndexint获取子字符串的结束索引值获取子字符串的结束索引值59语法语法substringAfterfn:substringAfter(string,substring)substringBeforefn:substringBefore(string,substring)这这2个语法接受个语法接受2个参数,其中第个参数,其中第2个参数为所要比对的子字个参数为所要比对的子字符串,其返回值为所获取的子字符串。符串,其返回值为所获取的子字符串。6010.6.3调整字符串整字符串字符串调整字符串调整-toLowerCase&toUpperCase语法语法toLowerCasefn:toLowerCase(string)-StringtoUpperCasefn:toUpperCase(string)-String语法语法fn:trim(string)-String61字符串调整字符串调整-split&joinsplit&join语法语法splitfn:split(string,delimiters)-Stringjoinfn:join(array,separator)-String62字符串调整字符串调整-replace语法语法fn:replace(inputString,beforeSubstring,afterSubstring)属性属性参参数数类类型型说说明明inputStringString函数所要进行置换操作的字符串函数所要进行置换操作的字符串beforeSubstringString被置换的子字符串被置换的子字符串afterSubstringString要置换的子字符串要置换的子字符串6310.6.4其他函数其他函数escapeXml&lengthescapeXml用来转换跳脱字符的符号,使其能够不经转换用来转换跳脱字符的符号,使其能够不经转换直接输出于网页上直接输出于网页上。fn:escapeXml(string)-StringscapeXml将指定字符串参数当中的跳脱字符,例如将指定字符串参数当中的跳脱字符,例如、&等等,转换成为其对应码,效果与等等,转换成为其对应码,效果与标签当标签当中中escapeXml属性设为属性设为true相同。相同。Length回传指定字符串当中所包含的字符数目回传指定字符串当中所包含的字符数目。fn:length(input)-integerlength函数接受一个函数接受一个input参数,并且返回其长度。必须参数,并且返回其长度。必须注意的是,除了字符串之外,其中的注意的是,除了字符串之外,其中的input也可是一个集也可是一个集合对象,此时其返回的是集合当中的对象数目合对象,此时其返回的是集合当中的对象数目6410.7JSTL中的中的SQL标签10.7.1设置数据来源设置数据来源10.7.2取得数据内容取得数据内容10.7.3指定参数指定参数10.7.4更新数据内容更新数据内容 10.7.5解析日期参数解析日期参数10.7.6批处理交易批处理交易65JSTLSQL标签标签分分类类标标签签说说明明联机联机setDataSource设定数据来源设定数据来源SQL操作指令操作指令query设定设定SQL查询查询param设定设定SQL参数参数update设定设定SQL变动变动dateParam日期参数解析日期参数解析transaction批量交易批量交易66语法语法67-属性属性属属性性动态动态类类型型说说明明dataSource是是Stringorjavax.sql.DataSource数据源名称字符串,可指定为数据源名称字符串,可指定为JNDI来源或是来源或是JDBC联机字符串联机字符串driver是是StringJDBC参数字符串,驱动程序类名称参数字符串,驱动程序类名称url是是StringJDBC参数字符串,数据来源名称参数字符串,数据来源名称user是是String数据库用户账号数据库用户账号password是是String数据库用户密码数据库用户密码var否否String储存联机设定的变量名称储存联机设定的变量名称scope否否String变量范围变量范围68dataSourcedataSource代表一个联机字符串,所有的联机信息可以代表一个联机字符串,所有的联机信息可以被直接设被直接设定在这个属性当中定在这个属性当中。url,driver,user,passwordurl为联机数据库的来源位置为联机数据库的来源位置,即即ODBC数据源数据源。driver为所需的驱动程序类名称为所需的驱动程序类名称。user与与password则分别是数据库的联机账号与密码,如则分别是数据库的联机账号与密码,如果数据库没有设定,则这两个值可以被省略果数据库没有设定,则这两个值可以被省略。69属性设定属性设定属属性性属属性性值值urljdbc:odbc:webDatadriversun.jdbc.odbc.JdbcOdbcDriver70标签设标签设定数据源定数据源通过通过标签设定数据来源标签设定数据来源:不使用数据源的设定方式如下不使用数据源的设定方式如下:71语法语法1:无本体内容无本体内容72语法语法2:包含指定搜寻参数的本体内容包含指定搜寻参数的本体内容actions73语法语法3:包含指定搜寻参数与选择性参数的本体内容包含指定搜寻参数与选择性参数的本体内容queryoptionalactions74-属性属性属属性性动动态态类类型型说说明明sql是是包含包含SELECT之之SQL字符串字符串SQL指令指令dataSource是是Stringorjavax.sql.DataSource数据源名称字符串,可指定为数据源名称字符串,可指定为JNDI数数据源或是据源或是JDBC联机字符串联机字符串maxRows是是StringSQL指令返回结果当中所包含的最大指令返回结果当中所包含的最大数据笔数,设定值省略或是等于数据笔数,设定值省略或是等于-1时,时,返回结果将没有限制返回结果将没有限制startRow是是StringSQL指令开始返回的数据内容索引指令开始返回的数据内容索引var否否String储存输出结果储存输出结果scope否否String变量范围变量范围75语法1:将参数值指定给属性value语法2:将参数值指定给本体内容parametervalue76语法1:无本体内容 77语法2:包含指定搜寻参数的本体内容actions78语法3:包含指定搜寻参数与选择性参数的本体内容updatestatementoptionalactions79JSTL另外提供一组标签另外提供一组标签专门用来处理这专门用来处理这种类型的数据种类型的数据。语法此标签的语法除了让网页设计人员指定所要使用的数据此标签的语法除了让网页设计人员指定所要使用的数据值,同时可以用来设定此参数值为日期或是时间格式值,同时可以用来设定此参数值为日期或是时间格式。80-属性属性属属性性动动态态类类型型说说明明value是是java.util.Date使用于字段为日期时间的参数值使用于字段为日期时间的参数值type是是String日期时间类型,为以下日期时间类型,为以下3个值其中一个:个值其中一个:date,time或是或是timestamp8110.8JSTL与与XML分分类类标标签签说说明明核心核心标签标签解释解释XML文件内容文件内容输出指定输出指定XPath的的XML节点内容节点内容储存指定储存指定XPath的的XML节点内容节点内容流程控制流程控制依依XPath判断式,控制程序流程判断式,控制程序流程对部份指定的对部份指定的XML文件内容运行列举循环文件内容运行列举循环提供容纳提供容纳与与的运行区块的运行区块区域当中条件为真的判断式区域当中条件为真的判断式当所有当所有的判断式不成立则运行此区块的判断式不成立则运行此区块样式转换样式转换以指定的以指定的XSLT样板,转换样板,转换XML格式格式8210.8JSTL与与XML10.8.1核心标签核心标签10.8.2流程控制流程控制10.8.3样式转换样式转换8310.8.1核心核心标签 语法语法1:通过字符串通过字符串(String)或是或是Reader对象指定所要解析的对象指定所要解析的XML文件文件。语法语法2:通过本体内容指定所要解析的通过本体内容指定所要解析的XML文件文件。XML內容文件內容文件84-属性属性属属性性动态动态类类型型说说明明doc是是String、Reader解释的解释的XML文件来源文件来源xml是是String、Reader同同docsystemId是是String解释解释XML文件的系统文件的系统IDfilter是是XMLFilterXML文件滤器文件滤器var否否String解释后的解释后的XMLscope否否Stringvar范围范围varDom否否String储存解释后的储存解释后的XML,类型为,类型为org.w3c.dom.DocumentscopeDom否否StringvarDom的范围的范围85val的的变变量用来量用来储储存存select指定的指定的XPath对应对应内容,而其内容,而其中的中的scope则则是是变变量的内容量的内容。一旦通一旦通过过储储存指定的存指定的XPath对应对应内容,内容,var将只能将只能提供提供给给其它的其它的XML标签标签所使用所使用。8610.8.2流程控制流程控制语法语法1:无本体内容无本体内容语法语法1:包含本体内容包含本体内容本体本体內容內容87、与与这这3个标签以个标签以为主体,组合成为一个选择性的为主体,组合成为一个选择性的判断式,其中的判断式,其中的进行相当于进行相当于x:if标签的判断行标签的判断行为,不过它还可以提供不同的输出结果,当判断条件不符的时为,不过它还可以提供不同的输出结果,当判断条件不符的时候,另外通过候,另外通过输出指定的内容输出指定的内容。语法语法:本体本体內內容容(和和标签标签)语法语法:本体本体內容內容语法语法:条件式区域条件式区域88除了除了,其它的两个标签均无任何属性需要设,其它的两个标签均无任何属性需要设。标签主要用来界定标签主要用来界定和和位置位置。与与之间,只能包含一个或是一个之间,只能包含一个或是一个以上的以上的标签,而标签,而标签可以省略,标签可以省略,但是最多只能有一个但是最多只能有一个。所有的所有的标签必须在标签必须在标签出现之前标签出现之前。标签的标签的select属性用来设定判断式,当它的运算属性用来设定判断式,当它的运算结果为结果为true的时候,其中的本体内容被运行,当所有的的时候,其中的本体内容被运行,当所有的均为均为false的时候,运行的时候,运行当中的本当中的本体内容体内容。89当解释的当解释的XML文件包含了一个以上的子节点,则可以用文件包含了一个以上的子节点,则可以用标签将其中所有的节点全部读取出来,以列出标签将其中所有的节点全部读取出来,以列出此标签的相关语法此标签的相关语法。语法语法varStatus=”varStatusName”begin=”begin”end=”end”step=”step”本体本体內容內容此此标签会将标签会将select属性属性XPath字符串表示式字符串表示式XpathExpression,其对应的,其对应的XML文件内容区块中所有的子文件内容区块中所有的子节点一一取出,除此之外,通过节点一一取出,除此之外,通过begin、end和和step3个属性个属性的设定,我们还可以指定取得某特定索引位置的节点内容的设定,我们还可以指定取得某特定索引位置的节点内容。90-属性属性属属性性动动态态类类型型说说明明var否否String指定用来储存节点的变量指定用来储存节点的变量select否否StringXPath表示式,代表所要浏览的表示式,代表所要浏览的XML区区块块varStatus否否String储存列举操作的运行状态储存列举操作的运行状态begin是是int开始列举的节点位置索引开始列举的节点位置索引end是是int结束列举的节点位置索引结束列举的节点位置索引step是是int列举节点的间隔数列举节点的间隔数9110.8.3样式式转换语法语法1:无本体内容无本体内容x:transformdoc=”XMLDocument”|xml1=”XMLDocument”xslt=”XSLTStylesheet”docSystemId=”XMLSystemId”|xmlSystemId1=”XMLSystemId”xsltSystemId=”XSLTSystemId”var=”varName”scope=”scopeName”|result=”resultObject”语法语法2:指定转换参数的本体内容指定转换参数的本体内容x:transformdoc=”XMLDocument”|xml1=”XMLDocument”xslt=”XSLTStylesheet”docSystemId=”XMLSystemId”|xmlSystemId1=”XMLSystemId”xsltSystemId=”XSLTSystemId”var=”varName”scope=”scopeName”|result=”resultObject”actions92语法语法3:包含包含XML文件与选择性的转换参数文件与选择性的转换参数x:transformxslt=”XSLTStylesheet”docSystemId=”XMLSystemId”|xmlSystemId1=”XMLSystemId”xsltSystemId=”XSLTSystemId”var=”varName”scope=”scopeName”|result=”resultObject”XMLDocumenttoparseoptionalactions93本章小本章小结通过使用标签库,可以大大降低通过使用标签库,可以大大降低JSP网页复杂度,网页复杂度,并且使代码最大程度地重用。从并且使代码最大程度地重用。从JSP2.0起,起,JSTL作为标准的支持。作为标准的支持。JSTL定义了定义了JSP开发中重用程度开发中重用程度对大的标签。对大的标签。本章重点介绍了本章重点介绍了JSTL中的核心标签,以及国际化中的核心标签,以及国际化所需的地区、编码、时区、日期等方面设置的标签,所需的地区、编码、时区、日期等方面设置的标签,最好介绍了对字符串的进行操作的一些函数标签。最好介绍了对字符串的进行操作的一些函数标签。94标准标准JSP标签是用来调用标签是用来调用JavaBean组件的操作,处理定向请求以简化组件的操作,处理定向请求以简化JSP页面开发与维护。页面开发与维护。JSP技术提供了一种封装其它动态类型的机制技术提供了一种封装其它动态类型的机制自定义标签,它扩展了自定义标签,它扩展了JSP语言。自定义标签通常发布在标签库中,该语言。自定义标签通常发布在标签库中,该库定义了一个自定义标签集并包含实现标签的对象。一些功能可以通过库定义了一个自定义标签集并包含实现标签的对象。一些功能可以通过自定义标签来实现,包括对隐含对象的操作,处理表单,访问数据库及自定义标签来实现,包括对隐含对象的操作,处理表单,访问数据库及其它企业级服务,如其它企业级服务,如e-mail,目录服务,处理流控制。,目录服务,处理流控制。JSP标签库由熟悉标签库由熟悉Java语言的开发者及精通访问数据及其它服务的专家来创建,由网络应语言的开发者及精通访问数据及其它服务的专家来创建,由网络应用设计者来使用,以集中精力来解决表现而不是如何访问企业服务。也用设计者来使用,以集中精力来解决表现而不是如何访问企业服务。也就是鼓励标签库的开发者与使用者相分离,自定义标签通过封装实现了就是鼓励标签库的开发者与使用者相分离,自定义标签通过封装实现了效率的提高。效率的提高。课堂堂测试一、填空一、填空1.JSTL提供的标签分为提供的标签分为5大类,分别是大类,分别是、和和。2.核心标签的前缀词和核心标签的前缀词和uri设置值分别是设置值分别是及及。3.在在JSTL核心标签当中,网页数据的存取操作行为核心标签当中,网页数据的存取操作行为时由标签时由标签、与与等等3个标签所设置的。个标签所设置的。4.标签标签可根据特定分隔符,将字符串分解成为字可根据特定分隔符,将字符串分解成为字符串数组。符串数组。5.网页运行期间所产生的异常,可通过网页运行期间所产生的异常,可通过标签来捕捉。标签来捕捉。966.在在url有关的标签中,有关的标签中,用来设置了一个超级链接。用来设置了一个超级链接。7.用以将网页导向特定位置。用以将网页导向特定位置。8.操作操作url所需的参数可通过来所需的参数可通过来设置。设置。9.流程控制标签用来控制程序运行的流程,流程控制标签用来控制程序运行的流程,搭配搭配与与,来进行多重判断。,来进行多重判断。10.标签通过属性值标签通过属性值、与与控制循环的控制循环的间隔数及开起始与结束值。间隔数及开起始与结束值。11.通过资源文件的设置,可以让网页轻易达到支持多国语言通过资源文件的设置,可以让网页轻易达到支持多国语言的目的,资源文件的内容由标签的目的,资源文件的内容由标签的设置来取得。的设置来取得。12.格式化操作主要由两种标签进行,其中的格式化操作主要由两种标签进行,其中的可用来设置可用来设置数字类型数据,数字类型数据,则用来设置日期类型数据。则用来设置日期类型数据。97课后后习题1、为何要使用自定义标签?、为何要使用自定义标签?2、简单标签和带体内容的标签有什么区别?、简单标签和带体内容的标签有什么区别?3、编写简单标签将阿拉伯数字转化为银行数字表示。、编写简单标签将阿拉伯数字转化为银行数字表示。98课外外读物物1唐有明唐有明,吴华等吴华等.JSP动态网站开发基础练习典型案例动态网站开发基础练习典型案例.北京北京:清华大学出版社清华大学出版社,20062刘晓华刘晓华,张健等张健等.JSP应用开发详解应用开发详解(第三版第三版).北京北京:电子工业出电子工业出版社版社,20073明日科技明日科技,王国辉等王国辉等.JSP程序开发范例宝典程序开发范例宝典.北京北京:人民邮电出人民邮电出版社版社,20074.李兴华李兴华,王月清王月清.名师讲坛名师讲坛JAVAWeb开发实战经典基础开发实战经典基础篇篇(JSP、Servlet、Struts、Ajax).北京北京:清华大学出版社清华大学出版社,20105.荣钦科技荣钦科技.JSP动态网站开发与实例动态网站开发与实例(第第3版版).北京北京:清华大学出清华大学出版社版社,200699
展开阅读全文