




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1core标签库 JSTL的Core标签库有如下用途:1.访问并修改内存中的数据;2.在页面上负责逻辑,进行决策;3.遍历数据。1.1 标签标签的各个属性及其含义如下表所示,它的主要作用是在页面打印出指定的值。属性名描述是否必须默认值value待计算的JSTL表达式或者一个字符串常量是无defaultvalue属性计算失败时要计算的JSTL表达式或常量否无escapeXml是否对特殊字符进行转义,例如用&代替&否true 当没有设置default属性的时候,JSTL会将标签体中的内容作为默认值。不能在指定了default属性的同时还在标签体中置入内容,否则报错。1.2 标签标签的作用是将一个值保存到指定的作用域中,这个值可以通过计算一个表达式得到,也可是标签体中的内容,它的各个属性及含义如下表所示:属性名描述是否必须默认值value待计算的JSTL表达式或者一个字符串常量否标签体var要保存变量的名称是无scope变量的作用域否pagevalue属性指定了变量的值,如果没有设置value属性,那么标签会将它的body中内容作为变量的值存储起来。同标签一样,如果指定了value属性,那么标签体中就不能再置入内容。1.3 标签和的作用相反,它从指定的作用域中删除某个指定的变量,它的属性如下表所示:属性名描述是否必须默认值var要删除的变量的名称是无scope要删除变量所在的作用域否page这里有一点值得注意,如果没有指定scope的值,那么标签会按照page-request-session-application的顺序,删除所有指定的变量。例如会将所有作用域中名字为name的变量删除。1.4 标签标签的主要作用是用于处理双向决策的条件逻辑,就是说条件要么为真要么为假,没有多个可能的选项。它的各个属性及含义如下表所示:属性名描述是否必须默认值test包含了一个待计算的条件是无var展示一个布尔值的属性的名称否无scope展示一个布尔值的属性的作用域否pagetest属性指定了一个条件或者布尔表达式,当这个表达式为true时,执行标签体,否则忽略标签体。属性var和scope的主要作用是帮助我们把条件表达式计算的结果保存起来,这样做是有好处的:对于某个要经常用到的条件,我们只需计算一次即可,而且可以让页面更加简洁,因为我们可以通过var来引用条件表达式的结果。如下例所示:=18” var=”isAdult” scope=”session”/上面的代码在session中保存了一个名字为isAdult的布尔型变量,在这之后的任何时候我们想知道用户是否是成年人,只需写即可。特别是在条件表达式非常复杂的时候,这个功能尤其有用。1.5 标签上述三个标签主要用于多个互斥条件下的决策,比如说3个条件C1,C2,C3,它们任何时候都只有一个为真。下面对这三个标签分别进行介绍。1.5.1 标签这个标签没有任何属性,它的作用仅仅就是用来容纳和标签,不在中的和标签没有任何意义。1.5.2 标签标签的属性只有一个:test,如下表所示,属性名描述是否必须默认值test包含了一个待计算的条件是无标签和标签比较相似,通过对test属性进行判断来觉得标签体是否执行。它们之间最大的区别就是:对于处于同一个标签中的所有而言,它们之中最多只有一个会被选中执行,当一个被选中后,所有其它的都会被忽略。1.5.3 标签标签也很简单,它没有任何属性。当同一个中的所有都没执行时(即条件均为false)标签就会被选中执行。从otherwise的语义上也可以看出来是这个含义。1.5.4 使用的一些规范 除了和标签体之外,中不能再包含任何直接的子元 素,即使是普通的文本都不行。 标签应该出现在所有的之后,不能出现在任何一个 之前 一个至少要包含一个标签,最多只能包含一个。1.6 标签是JSTL中最经常使用的对数据集进行遍历的标签,一般情况下使用它就能够满足我们的需求了,除非一些特殊的功能需求。它的基本属性如下表所示:属性名描述是否必须默认值items待遍历的数据集(collection)否无var当前itme的名称否无begin循环的起始项否0end循环的结束项否最后一项step两次循环之项之间的间隔否1var属性代表当前正在遍历的item,通过var的属性值我们可以操纵当前正在遍历的item。JSTL在对集合进行循环的时候,会给集合中的每一项一个索引(index):0代表第一个,1代表第二个,依此类推。begin就代表开始项的索引,end就代表结束项的索引,step则是代表前后两项之间的索引差的大小。这三个属性主要用来循环指定集合的某个子集,而不是遍历全部项。1.7 标签标签主要用于对字符串进行遍历,而标签所遍历的对象都是比较正式的数据集,具有统一个格式,如数组、List等等。的基本属性列表如下:属性名描述是否必须默认值items待遍历的字符串是无delims分隔符,对指定的字符串进行拆分的根据是无var指代当前遍历项否无begin循环的起始项否0end循环的结束项否最后一项step两次循环之项之间的间隔否1样例:上例将输出: a b cddelims属性可以指定多个分隔符,如下面的例子:逗号、点号、分号、冒号均指定为分隔符,因此目标字符串被解析成了a b c d e f g。关于分隔符有如下几点要注意的地方: 字符串中连续出现的分隔符被视为一个单独的分隔符 字符号开始和结尾部分的分隔符就会被忽略不计,不会产生空字符串此外,标签的items属性也可以是一个字符串,此时它和一个仅用逗号(,)作分隔符的标签是等同的。begin、end、step属性和中的含义相同1.8 &高级用途1.8.1 对数字进行循环这个功能仅标签具有,此时不必有items属性,如下例所示: 上面这段代码将在页面上打印出1 2 3 4 5.注意,标签没有这个功能,因为对而言,items属性是必须的。1.8.2 捕获当前循环的状态有时候我们可能需要根据当前循环项的状态作出一些处理。举个简单的例子,循环显示信息时,我们希望奇数行的背景都是蓝色,而偶数行的背景是白色,以蓝白相间的形式显示。这个时候我们需要用到varStatus属性,和都有这个属性。比如说我们指定varStatus属性的值为s:varStatus=”s”,此时我们就创建了一个名字为s的变量,这个变量是LoopTagStatus类型的,它具有如下一些属性:属性名类型描述indexnumber遍历的当前项在集合中在索引值countnumber遍历的当前回合数firstboolean遍历的当前回合是否是第一回合lastboolean遍历的当前回合是否是最后已回合当然它还有其它一些属性,但是商标所列是最常见的一些属性,下图有助于我们更好的理解这些属性的用途:1.9 标签标签可以看作是的加强版,它不仅可以include本地的文件,还可以include其它应用或者服务器上的文件。标签的属性如下表所示:属性名描述是否必须默认值url要导入到页面中的URL是无context斜杠(/)后面跟本地应用的名称否当前应用名var变量名,表示指定URL中的字符串内容否无scope循环的结束项否page关键属性是url,它指定了用于检索内容的url。通过我们把包含的页面叫做source page,而url指定的页面叫做target page。标签的作用就是将目标页的内容引入到当前页(source page)中来。1.9.1 引入同一个服务器上另外一个应用中的页面这里我们要用到的context属性,一个示例如下所示:,这里context属性表示同一个服务器上另外一个应用的名称,它应该以”/”开头。这里要注意,当的context属性被指定了的时候,context和url的值都必须以”/”开头。1.9.2 保存所引入页面的内容 通过var和scope属性我们可以将目标页中的内容作为一个变量存储在某个作用域中,默认是page作用域。这里要注意的是,存储起来的内容是纯文本的。如果我们用标签将它输出,页面上会输出一堆html文本。比方说直接输出这样一串文本,而不是把它解析成一个文本框了。因此,我们利用的这个功能时,目标页的内容都是一些纯文本的内容。当我们需要多次需要一个页面中的内容时,的这个功能就比较有用了,可以提高效率,不用多次重复的引入。1.9.3 与目标页之间的通信有时候当我们引入目标页时目标页需要动态的接收一些参数,从而可以根据不同的情况得到不同的输出。当前页与目标页之间的通信有两种方式,如下所述:标签标签是一个可选的子标签,用于当前页向目标页传递参数,在目标页中我们可以通过表达式$来获得参数,标签的属性如下表所示:属性名描述是否必须默认值name参数名称是无value参数值否标签体内容注:使用标签传递参数的效果就像平常我们在URL后面用?传递参数一样。标签如果当前页和目标页属于同一个应用,那么它们将共享同一个request、session和application作用域,如此一来,我们就可以通过标签来进行隐式的通信了。与前面一种传递方式相比,这种方式具有如下一些优点: 1.有时候目标页需要从session或者某个作用域中读取数据 2.使用只能传递一些简单的字符串和文本 3.只允许单向的交流,而则可以实现双向的交流,能够互动1.10 标签如同我们去一些机关办事时,那些办事的人经常将我们推来推去一样,我们的浏览器有时也会这样,只不过我们的浏览器更有耐心而已。有时候服务器会对我们的请求说:我这里没有你要的东西,你到这个url上面去看看吧。标签就起着这个作用,将我们的请求重定向到另外一个页面。标签的属性如下表所示:属性名描述是否必须默认值url重定向的url是无context斜杠(/)加上一个本地应用的名称否当前上下文 只要标签一被执行,页面就会终止执行,转而执行所指向的url。同标签一样,当使用了context属性时,context属性和url属性的值都必须以斜杠(/)开头。1.11 标签的标签的作用和标签的作用有点类似,它负责在页面上打印出一个url的文本,比方说,它将在页面上打印出/test/reg.jsp这样一个文本出来。因此标签通常是和html中的标签一起使用的,如:a href=”点击此处,的属性如下表所示:属性名描述是否必须默认值value要打印或者存储起来的url的值是无context斜杠(/)后面跟本地应用的名称否当前应用名var变量名,表示指定URL中的字符串内容否无scope循环的结束项否page可以看到的属性和的属性可以说是一样的,因此就不详细叙述了。那么为什么要使用标签呢?我们完全可以使用点击此处而不需使用标签啊?使用主要是基于两个原因:1保存session。确保session与用户之间的一一对应关系(不是很懂)2调整相对路径。Html标签中的相对路径和jstl中的相对路径是不同的。标签和、标签一样,可以通过子标签来传递参数。这里要注意的是打印或者存储的url值是经过调整了的,举个例子来说明,假设当前应用上下文是Struts,那么将打印出:/Struts/reg.jsp。2fmt标签库 fmt标签的主要作用有:1.读取并输出数据;2.读取和输出日期;3.处理国际化2.1 标签标签能够让我们定制数据的输出格式,默认情况下它将按照浏览器的配置(如地区、语言)来输出数据。标签的属性如下表所示:属性名描述是否必须默认值value需要被格式化的数值否标签体type数值显示的类型:普通数字、货币、百分数否numbercurrencyCodeISO-4217货币代码否无currencySymbol货币符号,如¥,$否无groupingUsed是否对数字聚合,如1,234,567否truemaxIntegerDigits最大整数位数否无minIntegerDigits最少整数位数否无maxFractionDigits最多小数位数否无minFractionDigits最少小数位数否无pattern格式化数据时所使用的具体模式否无var把格式化后的数据作为字符串存储起来所用的变量名否无scope作用域否page有两种方式来给标签指定要进行格式化的数值:一种是直接通过它的value属性来指定,另外一种是通过它的标签体内容来指定。同前面有的标签一样,如果指定了value属性的值,那么标签体中就不应该再有内容。无论采用哪种方式指定要进行格式化的数值,这个数值必须是Java的默认数据格式。比如说,如果我们指定的数值是”123,456”,那么此时页面将会报错,提示”123,456”不能被解析为一个数字。和其它许多标签一样,可以不将数值在页面上行输出而是保存在某个作用域中,这时候就需要用到它的var和scope属性。2.1.1 输出不同类型的数据标签的type属性指定了数据的输出形式,它有3中可能的取值,如下表所示:type属性的可选值描述例子number普通数值形式,默认值.24currency指定区域的货币形式$0.24percent百分数形式24%默认情况下输出普通形式的数据,在type为percent时,它将数据转化为百分数的形式输出。只有输出货币形式的数据时有一点复杂,输出货币形式的数据时有如下两个特征: 不同国家地区的货币符号不同,例如美国是$而中国是¥ 默认情况下,不同国家地区的货币数据中小数点位数不同,比如美国和法国是两位,而意大利则是0位仅当type=currency时,标签的currencyCode和currencySymbol属性才起作用,前者指定了货币的ISO4217货币代码,或者则指定了所使用的货币符号。注意,currencyCode必须是ISO4217标准码,否则报错;而currencySymbol则可以随意指定,当两者同时指定时,currencyCode将作为货币数值的显示前缀,如USD2.75。2.1.2 控制显示数字的个数有四个属性来控制数字的个数,分别是:maxIntegerDigits:最大整数位数,如指定为3,那么4567将输出为567,保留低位minIntegerDigits:最少整数位数,如指定为5,那么12将输出为00012,也就是说 高位补0,以保证整数位数达到指定要求maxFractionDigits:最大小数位数,如指定为2,那么0.241将输出为0.24,当实际 小数位数超过指定的最大位数时,多余的数字会被截取minFractionDigits:最小小数位数,如指定为4,那么0.24将输出为0.2400,也就 是说不够的部分用0来代替。2.1.3 定制数据模式标签pattern属性能够让我们更好的来控制数据的输出,pattern是一个指定了数据格式的字符串,它的使用方法可以查看Java中DeciamlFormat类的说明文档,一般情况下前面所讨论的那些属性已经足够来控制数据输出了。2.2 标签与相对应,主要用来显示日期和时间,它的属性如下表所示:属性名描述是否必须默认值value需要被格式化的数值是无type指定打印日期,时间,或者都打印否datedateStyle日期显示的风格否defaulttimeStyle时间显示的风格否defaulttimeZone对日期进行格式化时使用的时区否truepattern格式化日期时所使用的具体模式否无var把格式化后的日期作为字符串存储起来所用的变量名否无scope作用域否page与不同,的value属性必须有值,并且必须指定为一个日期变量,不能简单的指定为一个能够代表一个日期的字符串,如2000-10-15。默认情况下,按照本地设置的国家和地区来显示日期,如中国是2000-10-15,而美国则是Oct 15, 2007。默认情况下,只打印出日期,如果我们想打印时间,或者日期与时间都打印出来,可以通过type属性来控制,如下表所示:type属性的可选值描述例子date仅仅打印出日期2007-10-15time仅仅打印出时间13:41:07both同时打印出日期和时间2007-10-15 13:41:07dateStyle和timeStyle属性分别用于指定日期信息和时间信息的详细程度,他们的可选值以及样例如下表所示:可选值描述日期例子时间例子default默认风格2007-10-1513:41:07short缩写的风格07-10-15下午1:41medium中等长度的风格2007-10-1513:41:07long较长风格2007年10月15日下午01时41分07秒full完整信息2007年10月15日 星期一下午01时41分07秒 CST注意,上表中的样例是基于中国地区的,如果国家和地区不同,显示的风格也不同。除了上述两个风格属性之外,还提供了一个pattern属性来精确指定日期字符串的格式,可以单独控制年、月、日、小时、分钟等的显示风格,它的使用原理同Java中的SimpleDateFormat一样,关于pattern中各个字符串的作用及含义可以参看SimpleDateFormat的文档。2.3 标签主要用于输出数字:首先将数字格式化,然后将它们打印出来或者作为一个变量存储起来,而此处讨论的的主要作用则是读取数字,也就是说将一个字符串解析为一个数字,比如说将”50,000”, 是不能将它作为一个数字来处理的,这个时候我们需要使用标签了,它的功能有点类似DecimalFormat的parse方法。的所有属性如下表所示:属性名描述是否必须默认值value待解析的字符串否标签体type待解析字符串的数据形式:数字,货币,百分号否numberintegerOnly是否去掉小数部分否falsepattern解析数字时所使用的具体模式否无parseLocale使用的国家/地区否var把解析后的数字存储起来所用的变量名否无scope作用域否page大多数情况下我们并不需使用标签,仅当我们需要从一个字符串中获得一个数值时才需要使用它。默认情况下,会使用当前浏览器的国家/地区设置来解析字符串,而不同国家/地区表示数据的风格是不同的。我们可以通过parseLocale属性来改变所使用时区。比方说:将会得到500000,因为我本地是中国,此时如果我将本地设置为美国,页面将会报错,说¥500,000不能解析为一个数字。此时有两种解决方法:1将羊角符换为美元符$,字符正确解析2将parseLocale指定为“zh_CN”,显式地指定所用地区2.4 标签与相对应,主要是用于从字符串中解析日期,它的所有索性如下表所示:属性名描述是否必须默认值value待解析的日期字符串否标签体type如何解析:date time both否datedateStyle期望解析的日期详细程度否defaulttimeStyle期望解析的时间详细程度否defaulttimeZone对日期进行格式化时使用的时区否truepattern解析日期时所使用的具体模式否无parseLocale解析日期所使用的国家或地区var把解析的日期存储起来,类型为java.util.Date否无scope作用域否pagevalue属性所指定的日期字符串必须能够被正确的解析,否则会报错,比如说如下的代码:能够很好的被解析为一个java.util.Date对象,页面显示为Wed Oct 17 10:20:00 CST 2007,而如果是,页面则会报错,提示所给的字符串无法解析为日期对象,除非你指定pattern属性为yyyyMMdd HH:mm,因为在默认的国家地区是在中国,而中国默认的日期格式是yyyy-MM-dd格式的。因此,对字符串参数的要求比较严格,也正因如此,我们应该尽量少用这个标签,替代工作的地方应该在服务器端表示层的后段,比如在 Servlet 中。2.5 与 这两个标签都与时区的设置相关。事实上我们描述日期时间时都省去了时区,缺省情况下当然是当前所处地区的时区。比如说,我们现在说”10月18日下午”,肯定会被理解为”北京时间10月18日下午”,而JSTL在缺省情况下就是使用JSP容器所使用的时区。当应用涉及到国际化时,就会出现问题。比方说,如果美国东部的用户反问我们的应用,他看到的将是北京时间,这显然不合理。JSTL为我们提供了三种方式来设置时区:2.5.1为单个标签指定时区与标签都有一个timeZone属性,这个属性可用于指定时区,如EST表示东部标准时间,PST表示太平洋时间等等。注意,在这两个标签中timeZone所表达的意义是不一样的。中timeZone是指将指定的日期转化为某个指定时区下的日期,此时如果输出日期的完整格式,输出的时区将为我们指定的时区。而在中,timeZone属性则是表示该字符串所代表的时间是某个指定时区的,此时输出的时区将会是当前JSP容器所使用的时区。说的更通俗一点,将时间A转化为时间B,中timeZone指定的是时间B的时区,而中timeZone指定的则是时间A的时区。2.5.2持久设置时区标签比较简单,它的属性如下表所示:属性名描述是否必须默认值value所使用的时区标识符,如EST,PST是无var引用该时区的变量名否无scope作用域否pagevalue属性是必须的。如果没有指定var属性,那么它将覆盖指定scope里面的默认时区。如表明整个应用程序将使用东部标准时间作为默认时区。注意,只是设置了一个时区,如果给它指定了var属性,它不会覆盖指定作用域内的默认时区,因此也不会影响我们时间的显示。当且仅当没有指定var属性时,它所指定的时区设置才起作用。看下面的例子:将打印出:Sat Oct 20 03:00:00 CST 2007。而将打印出:Fri Oct 19 14:00:00 CST 2007。使用var属性后,将会在指定的scope中存放一个TimeZone变量,我们可以将它作为timeZone属性的值。看下面的例子:2.5.3 临时改变时区利用标签,我们可以让页面上某些标签使用某个特定的时区设置,而不用覆盖整个页面的默认时区。标签只有一个单独的属性,如下表所示:属性名描述是否必须默认值value所使用的时区标识符,如EST,PST是无它的作用如下图所示:标签的value属性所指定的时区将自动应用到它所包含的所有子标签中。2.6 前面我们一直都在说,JSTL标签会按照浏览器的配置来自动选择它所要使用的地区设置,通过我么可以自己来控制所要使用的地区。它的所有属性如下表所示:属性名描述是否必须默认值value所使用的地区名是无variant所使用地区的特定变量否无scope该设置的作用域否page一个地区的名字有两部分组成:语言代码+国家代码,其中语言代码是小写,而国家代码是大写,它们之间以连字符或下划线分隔,其中大写的国家代码是可选的。下图展示了是如何起作用的:下面的代码:表明在当前用户的整个会员中所使用的地区都是fr。2.7 国际化标签2.7.1 标签标签同我们在Struts2中所使用的getText()函数的功能一样,它的属性如下表所示:属性名描述是否必须默认值key所使用的国际化key否标签体bundle所使用的资源家族否无var将值存储起来所使用的变量名否无scope作用域否pagekey就相当于我们传给getText的参数,JSTL将根据key值去资源文件中查找对应的内容。Bundle属性就相当于Struts2中所指定的struts.custom.i18n.resources属性,它指明了资源文件的前缀。至于var和scope属性,还是和以前一样,将得到的值存储起来而不是打印出来。如果没有指定key属性,标签体的内容将作为key。2.7.2 标签标签主要用于可以消息传递参数,它一般用于标签内部。在资源文件中我们可以通过占位符获取消息。0代表第一个参数的内容,1代表第二个,依此类推。如我的资源文件:mytest_zh_CN.propertieszhukai=朱楷,0,1我的JSP文件部分内容: 那么页面上将会打印出:朱楷,你好哈,吃了没有啊。2.7.3 与对这两个标签的理解可以参照与,只不过前者设置的是所使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新课标八年级物理实验项目及进度安排
- 建筑工地实习日志范文与写作指南
- 零售商超供应链管理实务教程
- 公务员考试行测备考技巧
- 企业环保合规管理操作流程指南
- 城市绿化项目施工方案及预算表
- 现代物流仓储管理流程说明书
- 企业信息安全防护策略实施
- 翡翠鉴别专业培训课程资料
- 研究生综合英语课后习题详解
- 临时展览搭建与施工方案
- 2025天津宏达投资控股有限公司校园招聘18人笔试参考题库附带答案详解
- 2025年江苏省常州市辅警招聘考试题题库(含参考答案)
- 从国内外角度对人工智能未来发展探索及影响的研究报告
- 成人反流误吸高危人群全身麻醉管理专家共识(2025版)解读 3
- 2025辽宁鞍山(国家)高新技术产业开发区招聘国有企业人员(二)笔试历年参考题库附带答案详解
- 淀粉加工工培训考核试卷及答案
- 网站推广代理服务合同5篇
- 2025年燃气职业技能鉴定全真模拟模拟题【各地真题】附答案详解
- 2025中数联物流科技(上海)有限公司招聘考试参考试题及答案解析
- 艾梅乙反歧视培训课件
评论
0/150
提交评论