jstl set标签里set有default属性吗

jstl如何对集合的遍历(Map,Set)等_Linux编程_Linux公社-Linux系统门户网站
你好,游客
jstl如何对集合的遍历(Map,Set)等
来源:Linux社区&
作者:理央silence
//简单的map对象 & & &
Map map = new HashMap();& & &
map.put("aa", "你好");& & &
map.put("bb","中国");
request.setAttribute("person1", map);& &
//把map放入request域对象,真正的时候是有另一个控制器传送过来的,在这里我直接放在同一个页面,下面也一样&
//map中放入User对象& & &
User u1 = new User();& & &
u1.setName("hello");& & &
u1.setAge(18);& & &
User u2 = new User();& & &
u2.setName("world");& & &
u2.setAge(21);& & &
map.put("aa", u1);& & &
map.put("bb",u2);& & &
request.setAttribute("person", map);& & &
//set& & &
Set set = new HashSet();& & &
set.add(u1);& & &
set.add(u2);& & &
request.setAttribute("person2", set);& &
&!-- 遍历简单的map对象 & & &
&c:forEach items="${person1 }" var="per1"&& & & & & key=${per1.key },value=${per1.value }& & &
&/c:forEach&&br&& & & --&& &
&!-- 遍历Map中的User对象 --&& &
&h2&map的迭代&/h2&& &
&c:forEach items="${person}" var="user"&& & & &
key=${user.key },name=${user.value.name },age=${ user.value.age}& &
&/c:forEach&&br&& & & &
&h2&Set集合的遍历&/h2&& &
&c:forEach items="${person2 }" var="per"&& & & & name=${per.name },age=${per.age }& &
&/c:forEach&
上述的User中有两个属性,分别是name和age,以及相对应的set和get的方法。
本文永久更新链接地址:
相关资讯 & & &
& (11/17/:22)
& (10/21/:56)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款请问JSTL中表达试的问题
[问题点数:20分,结帖人CSDN]
请问JSTL中表达试的问题
[问题点数:20分,结帖人CSDN]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。JSTL(JavaServer Pages Standard Tag Library)——JSTL标准标签库
语法:&%@ taglib prefix="c" uri="/jsp/jstl/core" %&
注:JSTL1.0导入rui中的地址不需要加jsp
taglib: 是JSP指令,作用于JSP页面中,将标签库描述文件(.tld)引入该页面中
prefix: 设置前缀,前缀用于使用标签库描述文件中的标签
uri: 用于指定标签库的uri
可以把导入的标签指令写在一个 JSP 文件里面,然后应用页面使用include指令导入即可
导入标签指令示例:
&%@ page contentType="text/ charset=UTF-8" language="java" pageEncoding="UTF-8"%&
&%@ taglib prefix="c" uri="/jsp/jstl/core"%&
&%@ taglib prefix="fmt" uri="/jsp/jstl/fmt"%&
&%@ taglib prefix="fn" uri="/jsp/jstl/functions"%&
导入示例:&%@include file="taglib.jsp"%&
核心标签库
运算符操作—out、set、remove、catch&&& 流程控制—if、choose、when、otherwise
迭代操作—forEach、forTokens&&&&&&&&&&& URl操作—import、url、redirect、param
常用标签:
作用:用于显示内容,相当于脚本中的表达式 &%= %&
语法:1:没有本体内容&c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] /&
2:有本体内容&c:out value="value" [escapeXml="{true|false}"] & default value&/c:out&注:
是否支持EL
是否必须存在
需要显示的值(即要输出的信息,可以是EL表达式或常量)
如果 value 的值为 null,则显示 defalut 的值
是否转换特殊字元,如:& 转换成 &(为true则避开特殊的xml字符集)
&!-- 在页面显示 Hello JSP 2.0 !!! --&&c:out value="Hello JSP 2.0 !!!" /&
&!-- 在页面显示 Hello JSP 2.0 !!! --&&c:out&&Hello JSP 2.0 !!&/c:out&
&!获得存在 request 作用域中 name 的值并显示,如果 ${requestScope.name } 为 null 则显示默认值 -&
&c:out value="${requestScope.name }" default="Guest"/&
&!-- 在页面显示 &p&显示特殊字符&/p& --&&c:out value="&p&显示特殊字符&/p&" /&
&!-- 在页面显示 不显示特殊字符& --&
&c:out value="&p&不显示特殊字符&/p&" escapeXml="false"/&&c:set&
作用:用于将变量存储至 JSP 范围中或是 JavaBean 的属性中,就是说设置指定范围内的变量值,如果该变量不存在,则创建它。
1:将 Value的值,储存至范围为 scope 的 varName 变量中
&c:set var="varName" value="value" [scope="{page | request | session | application}"] /&
2:将本体内容的资料,储存至范围为 scope 的 varName 变量中
&c:set var="varName" value="value" [scope="{page | request | session | application}"] &本体内容&/c:set&
3:将 value 的值,储存至 target 物件的属性中
&c:set value="value" target="target" property="propertyName" /&
4:将本体内容的资料,储存至 target 物件的属性中
&c:set target="target" property="propertyName" &&本体内容&/c:set&
是否支持EL
是否必须存在
要被储存的值(即要保存的信息,可以是EL表达式或常量)
要存入的变量名称(即需要保存信息的变量)
var 变量的 JSP 范围(作用域)
为 JavaBean 或 java.util.Map 物件(如果指定了target属性, 那么property属性也必须指定)
指定 target 物件的属性
示例:&!-- 获得并存储 User 对象集合 --&&c:set var="users" value="${requestScope.allUsers}" /&
&!-- 如果 ${param.Username} 为 null 时,则设定 User (即 JavaBean 对象) 的 name 属性值为 null,
反则不为 null ,则将 ${param.Username } 的值存入 User 的 name 属性中(setter 机制) --&
&jsp:useBean id="user" class="com.java.demo.model.User" scope="request"/&
&c:set target="User" property="name" value="${param.Usernsame}"/&
&c:remove&作用:用于删除变量
语法:&c:remove var="varName" [scope="{page | request | session | application}"] /&
是否支持EL
是否必须存在
要删除的变量名称
var 变量的 JSP 范围(作用域)
&!-- 从 reques 作用域中删除 name 变量 --&&c:remove var="name" scope="request" /&
&c:catch&作用:用于处理产生错误的例外状况,并且将错误讯息存储起来。
语法:&c:catch [var="varName"]&&要抓取错误的部分&/c:catch&
是否支持EL
是否必须存在
用来储存错误信息的变量
示例:&!-- 因为字符串无法转换成整型,所以 &c:catch& 之间程序产生错误,&c:catch& 会自动的把错误存到 error_Message 变量中 --&
&c:catch var="error_Message"& &% int num = Integer.parseInt("Number"); %&&/c:catch&
&c:if&作用:用于条件判断
语法:1:没有本体内容&c:if test="testCondition" var="varName" [scope="{page | request | session | application}"] /&
2:有本体内容&c:if test="testCondition" [var="varName"] [scope="{page | request | session | application}"] &本体内容&/c:if&
是否支持EL
是否必须存在
如果运算式的结果为 true 则执行本体内容,false 则相反
用来储存 test 运算后的结果,即 true 或 false
var 变量的 JSP 范围(作用域)
示例:&!-- 从 request 作用域中获取用户名,如果用户名等于 Guest ,则将 true 存入 result 变量中 --&
&c:if var="result" test="${requestScope.userName=='Guest' }" &&${result }&/c:if&
&c:choose&作用:本身只当做 &when/&和 &otherwise/& 的父标签,即&when /&和 &otherwise/& 标签的即容器。
语法:&c:choose&&本体内容(&when&和&otherwise&)&/c:choose&
&c:choose&
&&c:when test="${requestScope.userType=='Admin' }"&&& 用户名为一级管理员 &/c:when&
&&c:when test="${requestScope.userType=='Guest'}"&&& 用户名为二级管理员&&/c:when&
&&c:otherwise&&&& 用户名为普通用户&&/c:otherwise&
&/c:choose&
&c:when&作用:如果条件成立则执行 when 里的语句
语法:&c:when test="testCodition"&&本体内容&/c:when&注:
是否支持EL
是否必须存在
如果运算式的结果为 true 则执行本体内容,false 则相反
&c:otherwise&作用:在用一个&c:choose&中,当所有&c:when&的条件都没有成立时,则执行&c:otherwise&的本体内容
语法:&c:otherwise&&本体内容&/c:otherwise&
&c:forEach&作用:用于遍历集合(collection)中的每个成员。当集合中成员条件成立时,就会持续重复执行forEach的本体内容
语法:1:遍历所有成员&c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]&本体内容&/c:forEach&
2:迭代指定的次数
&c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]&
本体内容&/c:forEach&注:
是否支持EL
是否必须存在
用来存放被遍历集合成员的变量
被遍历的集合物件
ArrysCollectioniteratorEnumerationMapString
用来存放现在遍历到的相关成员资讯
开始的位置
结束的位置
最后一个成员
每次迭代的间隔数
varStatus 属性
现在遍历到成员的索引
总共遍历成员的总数
现在遍历到的成员,是否为第一个成员
现在遍历到得成员,是否为最后一个成员
示例:&!-- 从 request 作用域中获得所有用户,以 user 变量来遍历所有用户 --&
&c:forEach var="user" items="${requstScope.allUser }" varStatus="varStatus"&
编&号:${varStatus.index }用户名:${user.userName }密&码:${user.userPass }&/c:forEach&
&c:forTorkens&作用:用来遍历一字符串中所有的成员,每个成员是由定义符号(delimiters)分隔的。
语法:&c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"][begin="begin"] [end="end"] [step="step"]&&本体内容&/c:forTokens&
是否支持EL
是否必须存在
用来存放被遍历集合成员的变量
被遍历的字串
定义用来分割字串的字符
用来存放现在遍历到的相关成员资讯
开始的位置
结束的位置
最后一个成员
每次遍历的间隔数
示例:&!-- 从 phoneNumber 变量中获得字符串,以 str 变量 "-" 为分隔符遍历 --&
&% String phoneNumber = "123-456-7890" %&
&c:forTokens var="str" items="phoneNumber" delims="-"&&${str }&/c:forTokens&
&c:import&作用:可以把其他静态或动态文件包含至本身 JSP 页面。
&c:import&和&jsp:includ& 的区别在于:&jsp:includ&只能包含和自己同一个工程下的文件,而&&c:import&除了包含和自己同一个工程下的文件还可以包含不同工程下的文件或者其他网站文件。
语法:1:&c:import url="url" [context="context"] [var="varName"] [scope="{page | request | session | application}"] &本体内容&/c:import&
2&c:import url="url" [context="context"] varReader="varReaderName" [charEncoding="charEncoding"] &本体内容&/c:import&
是否支持EL
是否必须存在
被包含文件(页面)的地址
相同Container(容器)下,其他 Web 站台必须以/开头
储存被包含的文件的内容(以 String 形态存入)
var 变量的 JSP 范围(作用域)
charEncoding
被包含页面文件内容的编码格式
ISO-8859-1
储存被包含的文件的内容(以 Reader 形态存入)
示例:&!-- 将 tools.jsp 包含到当前页的当前位置 --&
&c:import url="/tools.jsp"/&
&c:param&作用:可以将参数给被包含文件(设置参数)
语法:1:参数的值使用value属性指定&c:param name="name" value="value"/&
2:参数的值在标签中指定&c:param name="name"&parameter value&/c:param&注:
是否支持EL
是否必须存在
&c:url&作用:用来产生一个URL,用于构造URL,主要的用途是URL重写.
1:没有本体内容、&c:url value="value" [context="context"] [var="varName"] [scope="{page | request | session | application}"] /&
2:本体内容代表查询字串(Query String)参数
&c:url value="value" [context="context"] [var="varName"] [scope="{page | request | session | application}"] &&c:param&标签&/c:url&注:
是否支持EL
是否必须存在
相同 Container 下,其他 Web 站台必须以 / 开头
var 变量的 JSP 范围(作用域)
示例:&!-- 设置百度的连接 --&
&a href="&c:url value=''&&c:param name='param' value='value'/&&/c:url&"&百&/a&
&c:redirect&作用:可以将用户端的请求,从一个 JSP 网页导向到其他文件
语法:1:没有本体内容&c:redirect url="url" [context="context"] /&
2:本体内容代表查询字串(Query String)参数&c:redirect url="url" [context="context"] &&c:param /&&/c:redirect&注:
是否支持EL
是否必须存在
导向的目标 URL 地址
相同 Container 下,其他 Web 站台必须以 / 开头
示例:&!-- 网页会自动导向
&c:redirect url=""/&
&!-- 网页会自动导向
网址,地址栏中显示?param=value --&
&c:redirect url=""&&&param name="param" value="value"/&&/c:redirect&
阅读(...) 评论()10.1 JSTL+EL+Servlet的示例(1)
先来了解一下在Servlet中要做什么样的任务吧。
(1)Servlet代码如下:
10.1& JSTL+EL+Servlet的示例(2)
(2)工具类Student类代码如下:
(3)工具类aaa类代码如下:
(4)JSP代码如下:
【责任编辑:&TEL:(010)】
10.1& JSTL+EL+Servlet的示例(3)
(5)程序在IE中输出的结果如下:
隔行显示不同颜色,如图10-1所示。
图10-1& 隔行显示不同颜色
通过在Servlet中转发219.jsp文件用JSTL和EL表达式把数据显示在IE中。
10.2& 使用EL表达式显示String类型变量的示例
在Servlet文件中使用以下代码:将String变量存入到request作用域中。
在JSP文件中:使用simple_string_username value=${simple_string_username }显示request中的变量simple_string_username,而这个变量是在Servlet中存入request的。
EL表达式的使用非常简单,格式为&${}&,大括号&{}&中为表达式,在本例中是在request作用域中的字符串变量。
显示结果为:
10.3& 使用EL表达式显示ArrayList存储String类型变量的示例
在Servlet文件中:
在JSP文件中:
因为变量al_simple_string是一个数组列表类型(ArrayList),其中存储的是String类型数据值。可以通过像Java语言的下标的形式取出指定下标元素的数据值,并显示出来。
显示结果为:
10.4& 使用EL表达式显示ArrayList存储bean类类型变量的示例
在Servlet文件中:
ArrayList里面存储的是bean的实例,即复杂数据类型。Student的代码在前面已经列出,其实是一个只有username和age属性的class,并且有对应的set和get方法。
在JSP文件中:
由于al_simple_bean是ArrayList类型,并且每一个位置存储的是一个bean,所以想访问username必须取得每一个ArrayList元素中的bean,这样可以通过下载的方法来取得。通过下标得出的数据类型是一个Student类的实例,然后就可以通过方括号里面带单引号([''])的形式来访问bean的property属性了。
显示结果为:
10.5& 使用JSTL中的c:out标签显示String类型变量的示例
在Servlet文件中:
在JSP文件中:
&c:out&标签是JSTL的核心标签库中的一员,使用非常普遍且非常简单。在本示例中只使用c:out标签的value属性,value属性值的来源是EL表达式,通过EL表达式取出变量c_out_simple_string的值赋给c:out标签的value属性,然后通过c:out标签显示出来。
显示结果为:
【责任编辑:&TEL:(010)】
10.6& 使用JSTL标签显示bean中属性的示例
在Servlet文件中:
将Student的实例存放到request作用域中。
在JSP文件中:
由于Student_complex是一个bean的实例,要想访问bean的属性,只需要使用方括号加单引号(如['propertyName'])的形式来访问属性的值,自动调用属性的get方法,然后通过c:out标签显示出来。
显示结果为:
c_out输出复杂类型的属性值为:Student_complex
10.7& 使用JSTL标签对null和&&在默认值上的区别
在Servlet文件中2个变量的值分别为null和&&:
在JSP文件中:
default_null的值是:
default_nil的值是:
用BODY来代替default属性:
从JSP的JSTL代码中可以看到,c:out标签使用了default属性,如果值为空则把default的值显示出来,那么这个&空&到底是指null还是&&呢?看一下结果吧。
显示结果为:
default_null的值是:this is null
default_nil的值是:this is nil
用BODY来代替default属性:this is null too
从结果中可以看到,这个default中的值对null有效,而对&&无效。
10.8& 使用JSTL标签显示在线编辑器的内容(fckeditor)
在Servlet文件中:
使用c:out标签显示出在线编辑器的代码:
在这里只是模拟从数据库中将在线编辑器中的内容赋值给一个String变量,然后将这个变量放到request中,准备显示出来。
在JSP文件中:
在这里使用c:out标签的escapeXml属性来进行&& &&符号的转义,要设置为false。
显示结果为:
代码在IE中是一个超级链接。
【责任编辑:&TEL:(010)】
10.9& 使用JSTL标签和EL表达式通过变量显示属性的值
在Servlet文件中:
在JSP文件中:
EL表达式中的Student_complex是一个类的实例,是前面存入request作用域中的。然后通过变量var_name来间接地访问Student_complex实例中的username属性的值,并显示出来。
显示结果为:
通过变量的值来访问属性的EL实例: Student_complex
【责任编辑:&TEL:(010)】
10.10& 使用JSTL标签和EL表达式显示HashMap中String的值
在Servlet文件中:
在JSP文件中:
在JSP文件中,hm_simple_string是一个HashMap实例,Map是一个以key键value值配对的数据结构。通过key显示出value,这样就可以直接使用['key_name']的形式显示出指定key所对应的value了。
显示结果为:
通过EL表达式获取HashMap简单的内容value1
10.11& 使用JSTL标签和EL表达式显示HashMap中bean属性的值
在Servlet文件中:
HashMap存放的是一个类class的实例。
在JSP文件中:
hm_complex是一个HashMap类型,通过key可以取得value。但value是一个bean类型,所以就需要先通过['key1']来取得指定key所对应的value,再通过['username']来访问bean的username属性,并显示出来。
显示结果为:
通过EL表达式取HashMap复杂的内容:Student_complex
10.12 EL表达式中的保留字
在JSP文件中:
EL中的保留字and:
显示结果为:
在这个示例中,需要注意的是保留字null和empty在处理null和&&上的区别,这点在真实的软件项目中经常遇到,一定要掌握这个技能点。
还有一个是param隐含对象,这个功能是取得request.getParameter参数值的。
【责任编辑:&TEL:(010)】
10.13& EL中与生存期有关的对象
在Servlet文件中:
把对象存到request作用域中了。
在JSP文件中:
与生存期有关的隐含对象pageScope,requestScope,sessionScope,applicationScope:
很明显地显示出了在requestScope中的username_request的内容。由于sessionScope作用域中根本没有username_request,所以显示为空。
【责任编辑:&TEL:(010)】
10.14& JSTL中c:set标签body属性的使用示例
在JSP文件中:
JSTL的c:set标签的使用情况1(无BODY):
c:set标签的功能是声明一个变量并且赋值,设置值的形式分为两种,一种是无BODY,值是从value属性中获得的;另一种是有BODY,值即从BODY中来。
显示结果为:
10.15& JSTL中c:if标签body属性的使用示例
在JSP文件中:
&c:if&标签的作用相当于Java语言中的if语句,test属性即if语句中的条件,把boolean类型的结果存入var属性的变量中。如果有BODY的情况,则条件为真,并显示出BODY中的值。
显示结果为:
【责任编辑:&TEL:(010)】
10.16& JSTL中的c:choose标签的示例
在JSP文件中:
相当于switch语句的c:choose标签:
如果某一个条件为真,则显示BODY中的内容,c:otherwise相当于switch语句中的default子句。
显示结果为:
10.17& 使用JSTL中的c:forEach标签显示ArrayList中的String和bean属性的示例
在JSP文件中:
items属性即Collection或MAP接口对象,而var则是每循环一次当前集合中当前对象的实例,就通过EL表达式${item}显示出来。当然这只是局限显示String类型,而如果item是一个bean类型的话,还要加上${item['username']}属性。
显示结果为:
10.18& 使用JSTL中的c:forEach标签显示HashMap中的String和bean属性的示例
在JSP文件中:
JSTL中的循环c:forEach标签(HashMap:显示简单类型):
显示HashMap中的数据和显示ArrayList中的数据大体一样。第1种方式是通过key和value常量属性显示的,属于遍历类型的显示。而第2种方式是直接通过属性的值来取得数据的。
显示结果为:
【责任编辑:&TEL:(010)】
10.19& 使用JSTL标签和EL表达式
实现隔行显示不同颜色的效果
在Servlet文件中:
在JSP文件中:
隔行显示不同的颜色:
这个效果主要是使用了c:forEach标签中的varStatus属性来获取。隔行显示不同颜色的原理主要是index为奇数或偶数,这就需要在每次遍历时将当前显示的index的索引值取出来,再用&c:if&标签进行判断,就可以实现隔行显示不同颜色的效果了。
显示结果如图10-2所示。
图10-2& 隔行显示不同的颜色
【责任编辑:&TEL:(010)】
10.20& 使用JSTL标签和EL表达式
显示嵌套情况的数据
在Servlet文件中:
在JSP文件中:
显示结果为:
【责任编辑:&TEL:(010)】
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:231476次
积分:1985
积分:1985
排名:第8611名
原创:69篇
转载:61篇
评论:57条
(5)(2)(3)(1)(5)(2)(1)(4)(5)(2)(6)(2)(2)(6)(2)(7)(16)(5)(5)(1)(1)(2)(4)(1)(15)(1)(2)(5)(4)(3)(1)(3)(5)(1)jstl学习笔记(中)
9.2.3&循环标签
循环标签主要实现迭代操作。主要包含两个标签:&c:forEach&和&c:forTokens&标签,接下来将详细介绍这两个标签的用法。
1.&c:forEach&标签
该标签根据循环条件遍历集合(Collection)中的元素。
【语法】:
&c:forEach var=”name” items=”Collection”
varStatus=”StatusName” begin=”begin” end=”end”
step=”step”&
&/c:forEach&
【参数解析】:
(1)var设定变量名用于存储从集合中取出元素。
(2)items指定要遍历的集合。
(3)varStatus设定变量名,该变量用于存放集合中元素的信息。&&&&
(4)begin、end用于指定遍历的起始位置和终止位置(可选)。
(5)step指定循环的步长。
参数类型和相关说明见表9-1。
表9-1&循环标签属性说明
Collection
Enumeration
String []args
集合中最后一个元素
其中varStatus有4个状态属性(见表9-2)。
表9-2&varStatus的4个状态
当前循环的索引值
循环的次数
是否为第一个位置
是否为第二个位置
【示例代码】:代码9.10实现了遍历的两种方式:设定起始位置、不设定起始位置。同时实现了获得原属的状态信息。
代码9.10&&c:forEach&标签使用示例:coredemo08.jsp
&%@ page contentType="text/charset=GBK"
&%@page import="java.util.List"%&
import="java.util.ArrayList"%&
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&&title&JSTL: --
forEach标签实例&/title&
&h4&&c:out
value="forEach实例"/&&/h4&
& &List a=new ArrayList();
& &a.add("贝贝");
& & a.add("晶晶");
& &a.add("欢欢");
& & a.add("莹莹");
&a.add("妮妮");
&request.setAttribute("a",a);
&&B&&c:out
value="不指定begin和end的迭代:"
/&&/B&&br&
&c:forEach var="fuwa"
items="${a}"&
value="${fuwa}"/&&br&
&&/c:forEach&
value="指定begin和end的迭代:"
/&&/B&&br&
&c:forEach var="fuwa" items="${a}" begin="1" end="3"
value="${fuwa}"
&&/c:forEach&
&&B&&c:out
value="输出整个迭代的信息:"
/&&/B&&br&
&&c:forEach var="fuwa" items="${a}"
begin="3" end="4" step="1" varStatus="s"&
value="${fuwa}" /&的四种属性:&br&
&&&所在位置,即索引:&c:out
value="${s.index}"
&&&总共已迭代的次数:&c:out
value="${s.count}"
&&&是否为第一个位置:&c:out
value="${s.first}"
&&&是否为最后一个位置:&c:out
value="${s.last}"
&&/c:forEach&
【代码解析】:
(1)第13~18行通过Java脚本创建了一个集合对象a,并添加元素。
(2)第19行使用setAttribute()方法把集合存入request范围内。
(3)第22~24行未指定begin和end属性,直接从集合开始遍历到集合结束为止。
(4)第26~28行指定从集合的第二个(index值为1)元素开始,到第四个(index值为3)元素截止(index的值从0开始)。并指定step为2即每隔两个遍历一次。
(5)第30~35指定varStatus的属性名为s,并取出存储的状态信息。
【总结】:
(1)从图中可以看到不使用begin和end的迭代,从集合的第一个元素开始,遍历到最后一个元素。
(2)指定begin的值为1、end的值为3、step的值为2,从第二个开始首先得到晶晶,每两个遍历一次,则下一个显示的结果为莹莹,end为3则遍历结束。
(3)从指定的begin和end的值来看遍历第四个和第五个,因得到莹莹和妮妮。相关状态信息如图所示。
提示:本例使用的list是在JSP页面中使用Java脚本创建的,是因为JSTL缺少创建集合的功能,在开发中一般不会如此,可通过访问数据库得到数据集合,和通过设定JavaBean的值得到数据集合
2.&c:forTokens&
该标签用于浏览字符串,并根据指定的字符将字符串截取。
&c:forTokens items=”strigOfTokens”
delims=””delimiters [var=”name” begin=”begin” end=”end” step=”len”
varStatus=”statusName”] &
【参数说明】
(1)items指定被迭代的字符串。
(2)delims指定使用的分隔符。
(3)var指定用来存放遍历到的成员。
(4)begin指定遍历的开始位置(int型从取值0开始)。
(5)end指定遍历结束的位置(int型,默认集合中最后一个元素)。
(6)step遍历的步长(大于0的整型)。
(7)varStatus存放遍历到的成员的状态信息。
【示例代码】:代码9.11实现了遍历一个有符号的字符串,把指定的符号移除。指定begin和end值,并获得遍历到的元素的状态信息。
代码9.11&&c:forTokens&标签的示例:coredemo09.jsp
&%@ page contentType="text/charset=GBK"
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&&title&JSTL: --
forTokens标签实例&/title&
&h4&&c:out
value="forToken实例"/&&/h4&
&&c:forTokens items="北、京、欢、迎、您" delims=""
value="${c1}"&&/c:out&
&&/c:forTokens&&br&
&&c:forTokens items="123-"
delims="-" var="t"&
value="${t}"&&/c:out&
&/c:forTokens&&br&
& &&c:forTokens
items="1*2*3*4*5*6*7" delims="*" begin="1" end="3" var="n"
varStatus="s"&
value="${n}" /&的四种属性:&br&
&&&所在位置,即索引:&c:out
value="${s.index}"
&&&总共已迭代的次数:&c:out
value="${s.count}"
&&&是否为第一个位置:&c:out
value="${s.first}"
&&&是否为最后一个位置:&c:out
value="${s.last}"
&/c:forTokens&
【代码解析】:
(1)本示例共实现了3个&c:forToken&循环,10~12行第一个循环实现了遍历给定字符串“北、京、欢、迎、您”,并除去循环中遇到的“、”号。
(2)13~15行第2个循环遍历一串带有分隔符的电话号码,不读取分隔符号,将显示一个字符串。
(3)16~22行第3个循环遍历一个带“*”号的字符串,根据指定的起始位置把元素取出,并显示每个元素的状态信息。
提示:分隔符的作用是根据标识,截取字符串。如果未设定分隔符或在字符串中没有找到分隔付,将把整个元素作为一个元素截取。在实际应用中用于在除去某些符号在页面中显示。
&c:forToken&的属性varStatus的使用同&c:forEach&的使用方法相同,在此就再不表述。
&c:forEach&取Map的值:
&c:forEach var="item"
items="${map2}"&&
&${item.key}
&/c:forEach&&
&c:forEach var="item"
items="${map2}"&&
&${item.value}
&/c:forEach&&
&List&String& list =
ArrayList&String&();&
&list.add("first");&
&list.add("second");&
&List&String& list2
= new ArrayList&String&();
&list2.add("aaaaaa");&
&list2.add("bbbbbb");&
&Map&String,List&String&&
map = new HashMap();&
& &map.put("a",list);&
& &map.put("b",list2);&
&request.setAttribute("map",map);
&c:forEach var="item" items="${map['a']}"&&
&/c:forEach&&
&c:forEach var="item" items="${map['b']}"&&
&/c:forEach&&
//如果键是EL中的表达式,则items="${map[表达式]}"&
9.2.4&URL操作标签
JSTL包含3个与URL操作有关的标签,分别为:&c:import&、&c:redirect&和&c:url&标签。它们的作用为:显示其他文件的内容、网页导向、产生URL。下面将详细介绍这3个标签的使用方法。
1.&c:import&标签
该标签可以把其他静态或动态文件包含到本JSP页面。同&jsp:include&的区别为:只能包含同一个web应用中的文件。而&c:import&可以包含其他web应用中的文件,甚至是网络上的资源。
&c:import url=”url” [context=”context”][
value=”value”]
[scope=”page|request|session|application”]
[charEncoding=”encoding”]&
&c:import url=”url” varReader=”name”
[context=”context”][charEncoding=”encoding”]&
主要参数见表9-3。
表9-3&&c:import&标签参数说明
被导入资源的URL路径
相同服务器下其他的web工程,必须以“"”开头
以String类型存入被包含文件的内容。
var变量的JSP范围
charEncoding
被导入文件的编码格式
以Reader类型存储被包含文件内容
【参数说明】:
(1)URL为资源的路径,当应用的资源不存在时系统会抛出异常,因此该语句应该放在&c:catch&&/c:catch&语句块中捕获。应用资源有两种方式:绝对路径和相对路径。使用绝对路径示例如下:
使用相对路径的实例如下:
&c:import url=”aa.txt”&
aa.txt放在同一文件目录。
如果以“/”开头表示应用的根目录下。例如:tomcat应用程序的根目录文件夹为webapps。导入webapps下的文件bb.txt的编写方式为:
&c:import url=”/bb.txt”&
如果访问webapps管理文件夹中其他web应用就要用context属性。
(2)context属性用于在访问其他web应用的文件时,指定根目录。例如,访问root下的index.jsp的实现代码为:
&c:import url=”/index.jsp”
context=”/root”&
等同于webapps/root/index.jsp
(3)var、scope、charEncoding、varReader是可选属性。具体使用方式见示例代码。
【示例代码】:代码9.12实现了从绝对路径导入文件和从相对路径导入,同时使用var对象指定用变量来存储文件,并输出存入的文件内容。
代码9.12&&c:import&标签示例:coredemo10.jsp
&%@ page contentType="text/charset=GBK"
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
5&&&&&&&&&&&&&
&title&JSTL: -- import标签实例&/title&
&h4&&c:out
value="import实例"/&&/h4&
&h4&&c:out
value="绝对路径引用的实例"
&c:catch var="error1"&
&/c:catch&
14 && &c:out
value="${error1}"&&/c:out&
&c:out value="相对路径引用的实例,引用本应用中的文件"
&c:import url="a1.txt"
charEncoding="gbk"/&
&/c:catch&
&h4&&c:out
value="使用字符串输出、相对路径引用的实例,并保存在session范围内"
&c:catch var="error3"&
&c:import var="myurl" url="a1.txt" scope="session"
charEncoding="gbk"&&/c:import&
value="${myurl}"&&/c:out&
&c:out value="${myurl}" /&
&/c:catch&
value="${error3}"&&/c:out&
【代码解析】:
(1)第12行使用绝对路径导入百度首页,导入时使用&c:catch&&/c:catch&(11和12行)捕获异常。
(2)使用相对路径导入同一文件夹下的a1.txt文件,接收的字符编码格式使用charEncoding设置为gbk。
(3)同样导入a1.txt,不同的时使用var定义的变量接收要导入的文件,并存储在session中,如果在其他页面同样也要导入该文件,只须使用&c:out&输出a1.txt的值即可。
【说明】:
(1)在使用绝对路径导入时,因为电脑没有联网所以抛出异常。
(2)使用相对路径输出时,同样是引入的a1.txt文件显示的结果却不相同,这可以说明直接使用&c:import&导入,不设定var参数是直接在页面中显示的文本信息。而使用var参数输出时输出的实现存入的字符串。
提示:读者在练习时可以使用Tomcat的首页来导入url=”http://127.0.0.1:8080”来显示效果。
2.&c:redirect&标签
该标签用来实现了请求的重定向。同时可以在url中加入指定的参数。例如:对用户输入的用户名和密码进行验证,如果验证不成功重定向到登录页面;或者实现web应用不同模块之间的衔接。
【语法1】:
&c:redirect url=”url”
[context=”context”]&
【语法2】:
&c:redirect
url=”url”[context=”context”]&
&c:param name=”name1”
value=”value1”&
&/c:redirect&
【参数说明】:
(1)url指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址。
(2)用于导入其他web应用中的页面。
【示例代码】:代码9.13实现了当请求页面时重定向到tomcat首页。
代码9.13&&c:redirect&标签示例:coredemo11.jsp
&%@ page contentType="text/charset=GBK"
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&c:redirect
url="http://127.0.0.1:8080"&
name="uname"&olive&/c:param&
name="password"&01234&/c:param&
&/c:redirect&
【代码解析】
(1)使用重定向与载入页面不同,载入页面时在本页面中插入其他页面,而重定向是请求转发,等于在页面中重新输入了一次url。当重定向到某个页面时浏览器中的地址会发生变化。
(2)使用重定向时不用使用&c:catch&语句,当输入页面访问不到时,浏览器会报错,跟程序运行无关。如果使用重定向时页面定义的内容将不会得到显示。
(3)在重定向时为URL添加了两个参数和参数值:uname=olive和password=01234。
提示:注意图中的URL地址已经发生转变,同时可以看到传入的参数以参数值。
3.&c:url&标签
该标签用于动态生成一个String类型的URL,可以同&c:redirect&标签共同使用,也可以使用html的&a&标签实现超链接。
【语法1】:指定一个url不做修改,可以选择把该url存储在JSP不同的范围中。
value=”value”
[var=”name”][scope=”page|request|session|application”]
[context=”context”]/&
【语法2】:给url加上指定参数及参数值,可以选择以name存储该url。
value=”value”
[var=”name”][scope=”page|request|session|application”]
[context=”context”]&
name=”参数名”&value=”值”&
【示例代码】:代码9.14实现了使用动态生成url实现了网页的超链接。
代码9.14&&c:url&标签示例:coredemo12.jsp
contentType="text/charset=GBK" %&
&%@ taglib
prefix="c" uri="/jsp/jstl/core"
value="url标签使用"&&/c:out&
&h4&使用url标签生成一个动态的url,并把值存入session中.&/h4&
value="http://127.0.0.1:8080" var="url"
scope="session"&
href="${url}"&Tomcat首页&/a&
9.3&I18N格式标签库
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable
formation tags liberary)。引入该标签库的方法为:
&%@ taglib prefix="fmt"
uri="/jsp/jstl/fmt" %&
I18N格式标签库提供了11个标签,这些 标签从功能上可以划分为3类如下:
(1)数字日期格式化。formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
(2)读取消息资源。bundle标签、message标签、setBundle标签。
(3)国际化。setlocale标签、requestEncoding标签。
接下将详细介绍这些标签的功能和使用方式。
9.3.1&数字日期格式化
fmt详解链接:
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
1.&frm:formatNumber/&标签
该标签依据特定的区域将数字改变为不同的格式来显示。
【语法1】:
&frm:formatNumber value=”被格式化的数据”[type=”number|currency|percent”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[currencyCode=”code”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[currencySymbol=”symbol”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[groupingUsed=”true|false”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[maxIntergerDigits=”maxDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[minIntergerDigits=”minDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[maxFractionDigits=”maxDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[minFractionDigits=”minDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[var=”name”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=page|request|session|application]
【语法2】:
&frm:formatNumber
[type=”number|currency|percent”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[currencyCode=”code”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[currencySymbol=”symbol”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[groupingUsed=”true|false”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[maxIntergerDigits=”maxDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[minIntergerDigits=”minDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[maxFractionDigits=”maxDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[minFractionDigits=”minDigits”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[var=”name”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=page|request|session|application]
被格式化的数据
&frm:formatNumber&
属性说明如表9-4所示。
表9-4&&fmt:formatNumber&标签参数说明
要格式化的数据
指定类型(单位、货币、百分比等)见表
格式化的数据样式
currencyCode
货币单位代码
cuttencySymbol
货币符号($、¥)
groupingUsed
是否对整数部分进行分组如(9,999)
maxIntergerDigits
整数部分最对显示多少位数
minIntergerDigits
整数部分最少显示多少位
maxFractionDigits
小数部分最多显示多少位
minFractionDigits
小数部分最少显示多少位
存储格式化后的数据
var的JSP范围
Type属性的类型应用见表9-5.
表9-5&Type的属性类型
¥0.80
百分比格式
【示例代码】:代码9.14实现了对数字的格式化、货币的格式、货币的格式化。使用&frm:formatNumber&的各种属性的设定。
代码9.14&&fmt:formatNumber&标签示例:fmtdemo01.jsp
&%@ page language="java"
pageEncoding="gbk"%&
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&%@ taglib prefix="fmt"
uri="/jsp/jstl/fmt" %&
&&head&&&&&&
&title&I18N标签库&/title&
align="center"&&c:out
value="&frm:number&标签的使用"&&/c:out&&/h4&
&&table border=1 cellpadding="0"
cellspacing="0" align="center"&
align="center"&
width="100"&类型&&/td&
width="100"&使用数据&/td&
width="100"&结果&/td&
width="300"&说明&/td&
&&td&数字格式化&/td&&td&108.75&/td&
&&td&&fmt:formatNumber
type="number"
pattern="###.#"&108.75&/fmt:formatNumber&&/td&
&&td&使用pattern可以定义显示的样式。本例设定为###.#小数部分将使用四舍五入法。&/td&
&&td&数字格式化&/td&&td&9557&/td&
&&td&&fmt:formatNumber
type="number"
pattern="#.####E0"&9557&/fmt:formatNumber&&/td&
&&td&使用科学计数法。&/td&&
&&td&数字格式化&/td&&td&9557&/td&
&&td&&fmt:formatNumber
type="number"
&9557&/fmt:formatNumber&&/td&
&&td&使用默认分组。&/td&
&&td&数字格式化&/td&&td&9557&/td&
&&td&&fmt:formatNumber
type="number" groupingUsed="false"
&9557&/fmt:formatNumber&&/td&
&&td&不使用分组。&/td&
&&td&数字格式化&/td&&td&9557&/td&
&&td&&fmt:formatNumber
type="number"
maxIntegerDigits="3"&9557&/fmt:formatNumber&&/td&
&&td&使用位数限定,根据指定的位数显示,其他数字忽略。例如:9不被显示。&/td&
&&td&百分比格式化&/td&&td&0.98&/td&
&&td&&fmt:formatNumber
type="percent"&0.98&/fmt:formatNumber&&/td&
&&td&用百分比形式显示一个数据。&/td&
&&td&货币格式化&/td&&td&188.88&/td&
&&td&&fmt:formatNumber
type="currency"
&188.8&/fmt:formatNumber&&/td&
&td&将一个数据转化为货币形式输出。&/td&
&&td&存储数据&/td&&td&188.88&/td&
&&td&&fmt:formatNumber
type="currency"
var="money"&188.8&/fmt:formatNumber&
value="${money}"&&/c:out&
&&td&存储的money的值为${money}
【代码说明】:
(1)从应用角度可以把属性分为三类:数字格式化、货币格式化、百分比格式化。使用type指定类型。
(2)应用于数字格式化的属性有:partten属性、maxIntegerDigits属性、minIntegerDigits属性、maxFractionDigits属性和minFactionDigits属性。其中partten属性在设定格式化样式时会比较准确如:四舍五入、科学计数法的使用。而使用maIntegerDirgits等属性时,只把设定位数以外的数字舍去。
(3)货币格式化可以使用数字格式化的所有属性。如果有必要建议使用partten属性。currencyCode属性和currencySymbol只用于货币格式化。
(4)百分比格式化使用到的属性为type属性、partten属性,设定type属性的类型为percent即可。
(5)使用var属性时,会将格式化后的值存在JSP的某个范围内(一个String类型的字符串包括符号等)。&frm:forNumber&将不再输出格式化后的值可以使用EL表达式输出。
(6)通用属性:type属性、partten属性、var属性和scope属性。
提示:如果给定的数据类型有错误将或产生异常。例如:给定的数据为aa进行类型转化,将使应用程序无法显示。因此在实际应用中显示的格式化应该放入&c:catch/&语句中。
2.&frm:parseNumber&标签
将格式化后的数字、货币、百分比都转化为数字类型。
【语法1】:
&fmt:parseNumber value="number"
[type=”number|currency|percent”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[parseLocale=”locale”]&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[intergerOnly=”true|false”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=”page|request|session|application”]
【语法2】:
&fmt:parseNumber
[type=”number|currency|percent”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[parseLocale=”locale”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[intergerOnly=”true|false”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=”page|request|session|application”]
&/fmt:parseNumber&
属性说明见表9-6。
表9-6&&fmt:parseNumber&标签参数说明
被解析的字符串
指定单位(数字、货币、百分比)
parseLocale
用来替代默认区域的设定
Java.util.
默认本地样式
存储已经格式化的数据
var变量的作用域
&fmt:parseNumber&可以看作是&fmt:formatNumber&的逆运算。相应的参数和类型的配置和使用&fmt:formatNumber&格式化时相同。
【示例代码】:代码9.15实现了从字符串中提取数据,并用合适的数据类型进行存储(浮点性、整型等)。可以对转换后的数据进行加法运算。
代码9.15&&fmt:parseNumber&标签示例:fmtdemo02.jsp
&%@ page language="java"
pageEncoding="gbk"%&
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&%@ taglib prefix="fmt"
uri="/jsp/jstl/fmt" %&
&&title&I18N标签库&/title&
value="&frm:parseNumber&标签的使用"&&/c:out&&/h4&
&&fmt:formatNumber
type="currency"
var="money"&188.8&/fmt:formatNumber&
&&li&格式化前的数据为:&c:out
value="${money}"&&/c:out&
&&fmt:parseNumber var="money"
type="currency"&${money}&/fmt:parseNumber&
&&li&格式化后的数据为:&c:out
value="${money}"&&/c:out&
&&li&可以对格式化的后的数据进行运算:&
value="${money+200}"&&/c:out&
&&li&对百分比进行格式化98%为:
&&fmt:parseNumber
type="percent"&98%&/fmt:parseNumber&
【代码解析】:
(1)首先使用&fmt:formatNumber&将188.8转换为字符串¥188.8并在page范围内存储一个String类型的变量,变量名为money。
(2)使用&fmt:parseNumber&将¥188.8转化为浮点型的数据188.8并赋值为变量money,
则变量money转变为一个浮点型的值188.8,对188.8进行加运算。
(3)直接对一个百分比数98%进行转化。
提示:&fmt:parseNumber&属性参数的配置和使用同&fmt:formatNumber&标签使用的方式一样。同时,在进行类型转换时如果给出的类型不正确将会出现异常。例如在进行百分比转化时如果没有给type类型或者给出type类型但提供的数据中没有%都会产生异常。因此在实际应用中用&c:catch/&捕获异常。
3.&fmt:formatDate&标签
该标签主要用来格式化日期和时间。
【语法】:
&fmt: formatDate value=”date”
[type=”time|date|both”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[dateStyle=”default|short|medium|long|full”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[timeStyle=”default|short|medium|long|full”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[timeZone=”timeZone”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[var=”name”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=”page|request|session|application”]
参数说明见表9-7。
表9-7&&fmt:formatDate&标签属性说明
将要格式化的日期对象。
Java.util.Date
显示的部分(日期、时间或者两者)。
格式化的样式。
设定日期的显示方式。
设定时间的显示方式。
设定使用的时区。
当地所用时区
存储已格式化的日期或时间。
指定var存储的JSP范围。
其中type属性参数说明见表9-8。
表9-8&type属性参数说明
只显示时间
只显示时期
显示日期和时间
【示例程序】:代码9.16实现了对日期的格式化,使用了type、dateStyle、timeStyle等属性。
代码9.16&&fmt:formatDate&标签示例:fmtdemo03.jsp
&%@ page language="java"
pageEncoding="gbk"%&
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&%@ taglib prefix="fmt"
uri="/jsp/jstl/fmt" %&
&jsp:useBean id="date"
class="java.util.Date"&&/jsp:useBean&
&title&I18N标签库&/title&
&fmt:formatDate
value="${date}"&&/fmt:formatDate&&br&
&fmt:formatDate
value="${date}"
type="both"&&/fmt:formatDate&&br&
&fmt:formatDate
value="${date}" type="both" dateStyle="default"
&timeStyle="default"&&/fmt:formatDate&&br&
&fmt:formatDate value="${date}" type="both"
dateStyle="short"
&timeStyle="short"&&/fmt:formatDate&&br&
&fmt:formatDate value="${date}" type="both"
dateStyle="long"
&timeStyle="long"&&/fmt:formatDate&&br&
&fmt:formatDate value="${date}" type="both"
dateStyle="full"
timeStyle="full"&&/fmt:formatDate&&br&
&fmt:formatDate value="${date}" type="both"
dateStyle="full"
timeStyle="full"&&/fmt:formatDate&&br&
【代码解析】:
(1)首先通过配置JavaBean在页面上实例化java.util.Date对象。实现代码如下:
&jsp:useBean id="date"
class="java.util.Date"&&/jsp:useBean&
(2)对日期对象进行格式化时${date}是一个日期对象,如果给value设的值为String时程序会报错。
(3)设置type为both时,将显示日期和时间,同时示例中依次改变dateStyle和timeStyle的值作为比较。
使用IE的语言标签可以设置语言种类。
4.&fmt:parseDate&标签
&fmt:parseDate&标签主要将字符串类型的时间或日期转化为时间或日期对象。
【语法1】:
&fmt:parseDate value=”date”
[type=”time|date|both”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[parseLocale=”locale”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[dateStyle=”default|short|medium|long|full”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[timeStyle=”default|short|medium|long|full”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[timeZone=”timezone”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[var=”name”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=”page|request|session|application”]
【语法2】:
&fmt:parseDate&[type=”time|date|both”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
[pattern=”pattern”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[parseLocale=”locale”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[dateStyle=”default|short|medium|long|full”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[timeStyle=”default|short|medium|long|full”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[timeZone=”timezone”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[var=”name”]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[scope=”page|request|session|application”]
&/fmt:parseDate&
【参数说明】参数说明见表9-9.
表9-9&&fmt:parseData&标签属性说明
将要格式化的日期时间
字符串的类型(日期、时间或全部)
字符串使用的时间样式
parseLocale
取代默认地区设定
字符串使用的日期显示方式
字符串使用的时间显示格式
使用的时区
使用var定义的名字保存对象
var的JSP范围
【示例代码】:代码9.16实现了以下功能:首先,使用了&fmt:formatDate&把一个日期对象格式化成一个日期的字符串,并把该字符串以参数名为a存储page范围内。其次,使用&fmt:parseDate&方法把a的值(字符串)格式化成一个Date并以参数名为b存储在page范围内。最后,使用Java脚本证明生成的b为对象。
代码9.16:&fmt:formatDate&标签示例:fmtdemo04.jsp
&%@ page language="java"
pageEncoding="gbk"%&
&%@ taglib prefix="c"
uri="/jsp/jstl/core" %&
&%@ taglib prefix="fmt"
uri="/jsp/jstl/fmt" %&
&jsp:useBean id="date"
class="java.util.Date"&&/jsp:useBean&
&title&I18N标签库&/title&
&H4&&c:out
value="&frm:parseDate&标签的使用"&&/c:out&&/H4&
&fmt:formatDate value="${date}" var="a"
type="both"
dateStyle="full"
timeStyle="full"&&/fmt:formatDate&
&fmt:parseDate var="b" type="both"
dateStyle="full" timeStyle="full"&
&/fmt:parseDate&
out.println(pageContext.getAttribute("b").toString());
out.println("&br&");
out.println(pageContext.getAttribute("b").hashCode());
【代码解析】:
(1)使用&fmt:formatDate&把日期对象格式化成字符串。
(2)使用&fmt:parseDate&把字符串对象转化为日期对象,注意同(1)中的参数对比,可以发现两者是一个互逆的过程。
(3)使用Java脚本进行测试Date对象的toString()方法可以输出时间字符串。hashCode()可以得到一个对象的hashCode。该方法只能应用于对象,因此可以证明得到的是一个日期对象。
提示:&fmt:formatDate&和&fmt:parseDate&是相反的运算过程,可以对照学习。本例中的Java脚本的作用是为了证明生成的的确是一个对象。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 setdefault 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信