- 浏览: 114199 次
- 性别:
文章分类
- 全部博客 (390)
- java开发 (0)
- Struts2框架 (0)
- Spring3框架 (0)
- Spring4框架 (0)
- Hibernate3框架 (0)
- Hibernate4框架 (0)
- jQuery前台技术 (0)
- ExtJs3前台技术 (2)
- ExtJs4前台技术 (0)
- javascript脚本语言 (0)
- Oracle数据库 (0)
- MySQL数据库 (0)
- SQL Server数据库 (0)
- JSTL与EL (0)
- Ajax技术 (0)
- DWR技术 (0)
- Ibatis技术 (0)
- Mybatis技术 (0)
- JBPM工作流 (0)
- xstream技术 (0)
- 框架整合技术 (0)
最新评论
jstl学习笔记(中)
9.2.3<wbr><span style="font-family:黑体">循环标签</span></wbr>
<wbr></wbr>
循环标签主要实现迭代操作。主要包含两个标签:<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设定变量名,该变量用于存放集合中元素的信息。<wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr>
(4)begin、end用于指定遍历的起始位置和终止位置(可选)。
(5)step指定循环的步长。
参数类型和相关说明见表9-1。
表9-1<wbr><span style="font-family:黑体">循环标签属性说明</span></wbr>
<wbr></wbr>
名称 |
EL |
类型 |
是否必须 |
默认值 |
var |
N |
String |
是 |
无 |
items |
Y |
Arrays Collection Iterator Enumeration Map String []args |
是 |
无 |
begin |
Y |
int |
否 |
0 |
end |
Y |
int |
否 |
集合中最后一个元素 |
step |
Y |
int |
否 |
1 |
varStatus |
N |
String |
否 |
无 |
<wbr></wbr>
其中varStatus有4个状态属性(见表9-2)。
表9-2<wbr>varStatus<span style="font-family:黑体">的</span>4<span style="font-family:黑体">个状态</span></wbr>
<wbr></wbr>
属性名 |
类型 |
说明 |
index |
int |
当前循环的索引值 |
count |
int |
循环的次数 |
frist |
boolean |
是否为第一个位置 |
last |
boolean |
是否为第二个位置 |
<wbr></wbr>
【示例代码】:代码9.10实现了遍历的两种方式:设定起始位置、不设定起始位置。同时实现了获得原属的状态信息。
代码9.10<wbr><c:forEach><span style="font-family:黑体">标签使用示例:</span>coredemo08.jsp</wbr>
<wbr><wbr><%@ page contentType="text/html;charset=GBK"%></wbr></wbr>
<wbr><wbr><%@page import="java.util.List"%></wbr></wbr>
<wbr><wbr><%@pageimport="java.util.ArrayList"%></wbr></wbr>
<wbr><wbr><%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %></wbr></wbr>
<wbr><wbr><html></wbr></wbr>
<wbr><wbr><head></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><title>JSTL: --forEach<span style="font-family:黑体">标签实例</span></title></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr></head></wbr></wbr>
<wbr><wbr><body></wbr></wbr>
<wbr><wbr><h4><c:outvalue="forEach<span style="font-family:黑体">实例</span>"/></h4></wbr></wbr>
<wbr><wbr><hr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><%</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>List a=new ArrayList();</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>a.add("<span style="font-family:黑体">贝贝</span>");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> a.add("<span style="font-family:黑体">晶晶</span>");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>a.add("<span style="font-family:黑体">欢欢</span>");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr> a.add("<span style="font-family:黑体">莹莹</span>");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>a.add("<span style="font-family:黑体">妮妮</span>");</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>request.setAttribute("a",a);</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>%></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><B><c:outvalue="<span style="font-family:黑体">不指定</span>begin<span style="font-family:黑体">和</span>end<span style="font-family:黑体">的迭代:</span>"/></B><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><c:forEach var="fuwa"items="${a}"></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;<c:outvalue="${fuwa}"/><br></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr></c:forEach></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><B><c:outvalue="<span style="font-family:黑体">指定</span>begin<span style="font-family:黑体">和</span>end<span style="font-family:黑体">的迭代:</span>"/></B><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><c:forEach var="fuwa" items="${a}" begin="1" end="3"step="2"></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;<c:outvalue="${fuwa}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr></c:forEach></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><B><c:outvalue="<span style="font-family:黑体">输出整个迭代的信息:</span>"/></B><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><c:forEach var="fuwa" items="${a}"begin="3" end="4" step="1" varStatus="s"></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;<c:outvalue="${fuwa}" /><span style="font-family:黑体">的四种属性:</span><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">所在位置,即索引:</span><c:outvalue="${s.index}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">总共已迭代的次数:</span><c:outvalue="${s.count}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">是否为第一个位置:</span><c:outvalue="${s.first}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">是否为最后一个位置:</span><c:outvalue="${s.last}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr></c:forEach></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr></body></wbr></wbr>
<wbr><wbr></html></wbr></wbr>
【代码解析】:
(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<wbr><c:forTokens><span style="font-family:黑体">标签的示例:</span>coredemo09.jsp</wbr>
<wbr><wbr><%@ page contentType="text/html;charset=GBK"%></wbr></wbr>
<wbr><wbr><%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %></wbr></wbr>
<wbr><wbr><html></wbr></wbr>
<wbr><wbr><head></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><title>JSTL: --forTokens<span style="font-family:黑体">标签实例</span></title></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr></head></wbr></wbr>
<wbr><wbr><body></wbr></wbr>
<wbr><wbr><h4><c:outvalue="forToken<span style="font-family:黑体">实例</span>"/></h4></wbr></wbr>
<wbr><wbr><hr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><c:forTokens items="<span style="font-family:黑体">北、京、欢、迎、您</span>" delims=""var="c1"></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><c:outvalue="${c1}"></c:out></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr></c:forTokens><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><c:forTokens items="123-4567-8854"delims="-" var="t"></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><c:outvalue="${t}"></c:out></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr></c:forTokens><br></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><c:forTokensitems="1*2*3*4*5*6*7" delims="*" begin="1" end="3" var="n"varStatus="s"></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;<c:outvalue="${n}" /><span style="font-family:黑体">的四种属性:</span><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">所在位置,即索引:</span><c:outvalue="${s.index}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">总共已迭代的次数:</span><c:outvalue="${s.count}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">是否为第一个位置:</span><c:outvalue="${s.first}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr>&nbsp;&nbsp;<span style="font-family:黑体">是否为最后一个位置:</span><c:outvalue="${s.last}"/><br></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr></c:forTokens></wbr></wbr>
<wbr><wbr></body></wbr></wbr>
<wbr><wbr></html></wbr></wbr>
【代码解析】:
(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}"><wbr></wbr>
<wbr><wbr><wbr>${item.<span style="color:#ED1C24">key</span>}</wbr></wbr></wbr>
</c:forEach><wbr></wbr>
<c:forEach var="item"items="${map2}"><wbr></wbr>
<wbr><wbr><wbr>${item.<span style="color:#ED1C24">value</span>}</wbr></wbr></wbr>
</c:forEach><wbr></wbr>
<%<wbr></wbr>
<wbr><wbr>List<String> list =newArrayList<String>();<wbr></wbr></wbr></wbr>
<wbr><wbr>list.add("first");<wbr></wbr></wbr></wbr>
<wbr><wbr>list.add("second");<wbr></wbr></wbr></wbr>
<wbr><wbr>List<String> list2= new ArrayList<String>();</wbr></wbr>
<wbr><wbr>list2.add("aaaaaa");<wbr></wbr></wbr></wbr>
<wbr><wbr>list2.add("bbbbbb");<wbr></wbr></wbr></wbr>
<wbr><wbr>Map<String,List<String>>map = new HashMap();<wbr></wbr></wbr></wbr>
<wbr><wbr>map.put("<span style="color:#ED1C24">a</span>",list);<wbr></wbr></wbr></wbr>
<wbr><wbr>map.put("<span style="color:#ED1C24">b</span>",list2);<wbr></wbr></wbr></wbr>
<wbr><wbr>request.setAttribute("<span style="color:#FF7E00">map</span>",map);</wbr></wbr>
<wbr>%></wbr>
<c:forEach var="item" items="${map['a']}"><wbr></wbr>
<wbr><wbr>${item}<wbr></wbr></wbr></wbr>
</c:forEach><wbr></wbr>
<c:forEach var="item" items="${map['b']}"><wbr></wbr>
<wbr><wbr>${item}<wbr></wbr></wbr></wbr>
</c:forEach><wbr></wbr>
//如果键是EL中的表达式,则items="${map[表达式]}"<wbr></wbr>
9.2.4<wbr>URL<span style="font-family:黑体">操作标签</span></wbr>
JSTL包含3个与URL操作有关的标签,分别为:<c:import>、<c:redirect>和<c:url>标签。它们的作用为:显示其他文件的内容、网页导向、产生URL。下面将详细介绍这3个标签的使用方法。
1.<c:import>标签
该标签可以把其他静态或动态文件包含到本JSP页面。同<jsp:include>的区别为:只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
语法1:
<c:import url=”url” [context=”context”][value=”value”]
[scope=”page|request|session|application”][charEncoding=”encoding”]>
语法2:
<c:import url=”url” varReader=”name”[context=”context”][charEncoding=”encoding”]>
主要参数见表9-3。
表9-3<wbr><c:import><span style="font-family:黑体">标签参数说明</span></wbr>
<wbr></wbr>
名称 |
说明 |
EL |
类型 |
必须 |
默认值 |
url |
被导入资源的URL路径 |
Y |
String |
是 |
无 |
context |
相同服务器下其他的web工程,必须以“"”开头 |
Y |
String |
否 |
无 |
var |
以String类型存入被包含文件的内容。 |
N |
String |
否 |
无 |
Scope |
var变量的JSP范围 |
N |
String |
否 |
page |
charEncoding |
被导入文件的编码格式 |
Y |
String |
否 |
无 |
varReader |
以Reader类型存储被包含文件内容 |
N |
String |
否 |
无 |
<wbr></wbr>
【参数说明】:
(1)URL为资源的路径,当应用的资源不存在时系统会抛出异常,因此该语句应该放在<c:catch></c:catch>语句块中捕获。应用资源有两种方式:绝对路径和相对路径。使用绝对路径示例如下:
<c:importurl=”http://www.baidu.com”>
使用相对路径的实例如下:
<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<wbr><c:import><span style="font-family:黑体">标签示例:</span>coredemo10.jsp</wbr>
1<wbr><wbr><wbr><wbr><%@ page contentType="text/html;charset=GBK"%></wbr></wbr></wbr></wbr>
2<wbr><wbr><wbr><wbr><%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %></wbr></wbr></wbr></wbr>
3<wbr><wbr><wbr><wbr><html></wbr></wbr></wbr></wbr>
4<wbr><wbr><wbr><wbr><head></wbr></wbr></wbr></wbr>
5<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><title>JSTL: -- import<span style="font-family:黑体">标签实例</span></title></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
6<wbr><wbr><wbr><wbr></head></wbr></wbr></wbr></wbr>
7<wbr><wbr><wbr><wbr><body></wbr></wbr></wbr></wbr>
8<wbr><wbr><wbr><wbr><h4><c:outvalue="import<span style="font-family:黑体">实例</span>"/></h4></wbr></wbr></wbr></wbr>
9<wbr><wbr><wbr><wbr><hr></wbr></wbr></wbr></wbr>
10<wbr><wbr><wbr><wbr><h4><c:outvalue="<span style="font-family:黑体">绝对路径引用的实例</span>"/></h4></wbr></wbr></wbr></wbr>
11<wbr><wbr><wbr><wbr><c:catch var="error1"></wbr></wbr></wbr></wbr>
12<wbr><wbr><wbr><wbr><c:importurl="http://www.baidu.com"/></wbr></wbr></wbr></wbr>
13 <wbr><wbr></c:catch></wbr></wbr>
14 <wbr><wbr> <c:outvalue="${error1}"></c:out></wbr></wbr>
15 <wbr><wbr><hr></wbr></wbr>
16<wbr><wbr><wbr><wbr><h4></wbr></wbr></wbr></wbr>
17<wbr><wbr><wbr><wbr><c:out value="<span style="font-family:黑体">相对路径引用的实例,引用本应用中的文件</span>"/></h4></wbr></wbr></wbr></wbr>
18<wbr><wbr><wbr><wbr><c:catch></wbr></wbr></wbr></wbr>
19<wbr><wbr><wbr><wbr><c:import url="a1.txt"charEncoding="gbk"/></wbr></wbr></wbr></wbr>
20<wbr><wbr><wbr><wbr></c:catch></wbr></wbr></wbr></wbr>
21<wbr><wbr><wbr><wbr><hr></wbr></wbr></wbr></wbr>
22<wbr><wbr><wbr><wbr><h4><c:outvalue="<span style="font-family:黑体">使用字符串输出、相对路径引用的实例,并保存在</span>session<span style="font-family:黑体">范围内</span>"/></h4></wbr></wbr></wbr></wbr>
23<wbr><wbr><wbr><wbr><c:catch var="error3"></wbr></wbr></wbr></wbr>
24<wbr><wbr><wbr><wbr><c:import var="myurl" url="a1.txt" scope="session"charEncoding="gbk"></c:import></wbr></wbr></wbr></wbr>
25<wbr><wbr><wbr><wbr><c:outvalue="${myurl}"></c:out></wbr></wbr></wbr></wbr>
26<wbr><wbr><wbr><wbr><c:out value="${myurl}" /></wbr></wbr></wbr></wbr>
27<wbr><wbr><wbr><wbr></c:catch></wbr></wbr></wbr></wbr>
28<wbr><wbr><wbr><wbr><c:outvalue="${error3}"></c:out></wbr></wbr></wbr></wbr>
29<wbr><wbr><wbr><wbr></body></wbr></wbr></wbr></wbr>
30<wbr><wbr><wbr><wbr></html></wbr></wbr></wbr></wbr>
【代码解析】:
(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:redirecturl=”url”[context=”context”]>
<c:param name=”name1”value=”value1”>
</c:redirect>
【参数说明】:
(1)url指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址。
(2)用于导入其他web应用中的页面。
【示例代码】:代码9.13实现了当请求页面时重定向到tomcat首页。
代码9.13<wbr><c:redirect><span style="font-family:黑体">标签示例:</span>coredemo11.jsp</wbr>
<%@ page contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
<c:redirecturl="http://127.0.0.1:8080">
<c:paramname="uname">olive</c:param>
<c:paramname="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不同的范围中。
<c:urlvalue=”value”[var=”name”][scope=”page|request|session|application”]
[context=”context”]/>
【语法2】:给url加上指定参数及参数值,可以选择以name存储该url。
<c:urlvalue=”value”[var=”name”][scope=”page|request|session|application”]
[context=”context”]>
<c:paramname=”参数名”<wbr>value=”<span style="font-family:黑体">值</span>”></wbr>
</c:url>
【示例代码】:代码9.14实现了使用动态生成url实现了网页的超链接。
代码9.14<wbr><c:url><span style="font-family:黑体">标签示例:</span>coredemo12.jsp</wbr>
<%@ pagecontentType="text/html;charset=GBK" %>
<%@ taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:outvalue="url标签使用"></c:out>
<h4>使用url标签生成一个动态的url,并把值存入session中.</h4>
<hr>
<c:urlvalue="http://127.0.0.1:8080" var="url"scope="session">
</c:url>
<ahref="${url}">Tomcat首页</a>
9.3<wbr>I18N<span style="font-family:方正楷体简体">格式标签库</span></wbr>
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capableformation tags liberary)。引入该标签库的方法为:
<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>
I18N格式标签库提供了11个标签,这些标签从功能上可以划分为3类如下:
(1)数字日期格式化。formatNumber标签、formatData标签、parseNumber标签、parseDate标签、timeZone标签、setTimeZone标签。
(2)读取消息资源。bundle标签、message标签、setBundle标签。
(3)国际化。setlocale标签、requestEncoding标签。
接下将详细介绍这些标签的功能和使用方式。
9.3.1<wbr><span style="font-family:黑体">数字日期格式化</span></wbr>
fmt详解链接:http://blog.sina.com.cn/s/blog_4f925fc30102dyfe.html
数字日期格式化标签共有6个,用来将数字或日期转换成设定的格式。
1.<frm:formatNumber/>标签
该标签依据特定的区域将数字改变为不同的格式来显示。
【语法1】:
<frm:formatNumber value=”被格式化的数据”[type=”number|currency|percent”]
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[currencyCode=”code”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[currencySymbol=”symbol”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[groupingUsed=”true|false”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[maxIntergerDigits=”maxDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[minIntergerDigits=”minDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[maxFractionDigits=”maxDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[minFractionDigits=”minDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[var=”name”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=page|request|session|application]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
/>
【语法2】:
<frm:formatNumber[type=”number|currency|percent”]
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[currencyCode=”code”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[currencySymbol=”symbol”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[groupingUsed=”true|false”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[maxIntergerDigits=”maxDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[minIntergerDigits=”minDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[maxFractionDigits=”maxDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[minFractionDigits=”minDigits”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[var=”name”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=page|request|session|application]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
><wbr></wbr>
被格式化的数据
<frm:formatNumber>
属性说明如表9-4所示。
表9-4<wbr><fmt:formatNumber><span style="font-family:黑体">标签参数说明</span></wbr>
<wbr></wbr>
名称 |
说明 |
EL |
类型 |
必须 |
默认值 |
value |
要格式化的数据 |
是 |
String |
是 |
无 |
type |
指定类型(单位、货币、百分比等)见表 |
是 |
String |
否 |
number |
pattern |
格式化的数据样式 |
是 |
String |
否 |
无 |
currencyCode |
货币单位代码 |
是 |
String |
否 |
无 |
cuttencySymbol |
货币符号($、¥) |
是 |
String |
否 |
无 |
groupingUsed |
是否对整数部分进行分组如(9,999) |
是 |
boolean |
是 |
true |
maxIntergerDigits |
整数部分最对显示多少位数 |
是 |
int |
否 |
无 |
minIntergerDigits |
整数部分最少显示多少位 |
是 |
int |
否 |
无 |
maxFractionDigits |
小数部分最多显示多少位 |
是 |
int |
否 |
无 |
minFractionDigits |
小数部分最少显示多少位 |
是 |
int |
否 |
无 |
var |
存储格式化后的数据 |
否 |
String |
否 |
无 |
scope |
var的JSP范围 |
否 |
String |
否 |
page |
<wbr></wbr>
Type属性的类型应用见表9-5.
表9-5<wbr>Type<span style="font-family:黑体">的属性类型</span></wbr>
<wbr></wbr>
类型 |
说明 |
示例 |
number |
数字格式 |
0.8 |
currency |
当地货币 |
¥0.80 |
percent |
百分比格式 |
80% |
<wbr></wbr>
【示例代码】:代码9.14实现了对数字的格式化、货币的格式、货币的格式化。使用<frm:formatNumber>的各种属性的设定。
代码9.14<wbr><fmt:formatNumber><span style="font-family:黑体">标签示例:</span>fmtdemo01.jsp</wbr>
<%@ page language="java"pageEncoding="gbk"%>
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<wbr><head><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><title>I18N<span style="font-family:黑体">标签库</span></title></wbr></wbr></wbr>
<wbr></head></wbr>
<wbr><body></wbr>
<wbr><h4align="center"><c:outvalue="<frm:number><span style="font-family:黑体">标签的使用</span>"></c:out></h4></wbr>
<wbr><hr></wbr>
<wbr><table border=1 cellpadding="0"cellspacing="0" align="center"></wbr>
<wbr><tralign="center"></wbr>
<tdwidth="100">类型<wbr></td></wbr>
<tdwidth="100">使用数据</td>
<tdwidth="100">结果</td>
<tdwidth="300">说明</td>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">数字格式化</span></td><td>108.75</td></wbr>
<wbr><td><fmt:formatNumbertype="number"pattern="###.#">108.75</fmt:formatNumber></td></wbr>
<wbr><td><span style="font-family:黑体">使用</span>pattern<span style="font-family:黑体">可以定义显示的样式。本例设定为</span>###.#<span style="font-family:黑体">小数部分将使用四舍五入法。</span></td></wbr>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">数字格式化</span></td><td>9557</td></wbr>
<wbr><td><fmt:formatNumbertype="number"pattern="#.####E0">9557</fmt:formatNumber></td></wbr>
<wbr><td><span style="font-family:黑体">使用科学计数法。</span></td><wbr></wbr></wbr>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">数字格式化</span></td><td>9557</td></wbr>
<wbr><td><fmt:formatNumbertype="number">9557</fmt:formatNumber></td></wbr>
<wbr></td></wbr>
<wbr><td><span style="font-family:黑体">使用默认分组。</span></td></wbr>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">数字格式化</span></td><td>9557</td></wbr>
<wbr><td><fmt:formatNumbertype="number" groupingUsed="false">9557</fmt:formatNumber></td></wbr>
<wbr><td><span style="font-family:黑体">不使用分组。</span></td></wbr>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">数字格式化</span></td><td>9557</td></wbr>
<wbr><td><fmt:formatNumbertype="number"maxIntegerDigits="3">9557</fmt:formatNumber></td></wbr>
<wbr><td><span style="font-family:黑体">使用位数限定,根据指定的位数显示,其他数字忽略。例如:</span>9<span style="font-family:黑体">不被显示。</span></td></wbr>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">百分比格式化</span></td><td>0.98</td></wbr>
<wbr><td><fmt:formatNumbertype="percent">0.98</fmt:formatNumber></td></wbr>
<wbr><td><span style="font-family:黑体">用百分比形式显示一个数据。</span></td></wbr>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">货币格式化</span></td><td>188.88</td></wbr>
<wbr><td><fmt:formatNumbertype="currency">188.8</fmt:formatNumber></td></wbr>
<td>将一个数据转化为货币形式输出。</td>
<wbr></tr></wbr>
<wbr><tr></wbr>
<wbr><td><span style="font-family:黑体">存储数据</span></td><td>188.88</td></wbr>
<wbr><td><fmt:formatNumbertype="currency"var="money">188.8</fmt:formatNumber></wbr>
<wbr><c:outvalue="${money}"></c:out></wbr>
<wbr></td></wbr>
<wbr><td><span style="font-family:黑体">存储的</span>money<span style="font-family:黑体">的值为</span>${money}</td></wbr>
<wbr></tr></wbr>
<wbr></table></wbr>
<wbr></body></wbr>
</html>
【代码说明】:
(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”]
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[parseLocale=”locale”]<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[intergerOnly=”true|false”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=”page|request|session|application”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
/>
【语法2】:
<fmt:parseNumber[type=”number|currency|percent”]
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[parseLocale=”locale”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[intergerOnly=”true|false”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=”page|request|session|application”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
><wbr></wbr>
Number
</fmt:parseNumber>
属性说明见表9-6。
表9-6<wbr><fmt:parseNumber><span style="font-family:黑体">标签参数说明</span></wbr>
<wbr></wbr>
名称 |
说明 |
EL |
类型 |
是否必须 |
默认值 |
value |
被解析的字符串 |
是 |
String |
是 |
无 |
type |
指定单位(数字、货币、百分比) |
是 |
String |
是 |
number |
pattern |
格式样式 |
是 |
String |
否 |
无 |
parseLocale |
用来替代默认区域的设定 |
是 |
String, Java.util. Locale |
是 |
默认本地样式 |
var |
存储已经格式化的数据 |
否 |
String |
否 |
无 |
scope |
var变量的作用域 |
否 |
String |
是 |
page |
<wbr></wbr>
<fmt:parseNumber>可以看作是<fmt:formatNumber>的逆运算。相应的参数和类型的配置和使用<fmt:formatNumber>格式化时相同。
【示例代码】:代码9.15实现了从字符串中提取数据,并用合适的数据类型进行存储(浮点性、整型等)。可以对转换后的数据进行加法运算。
代码9.15<wbr><fmt:parseNumber><span style="font-family:黑体">标签示例:</span>fmtdemo02.jsp</wbr>
<%@ page language="java"pageEncoding="gbk"%>
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<wbr><head></wbr>
<wbr><title>I18N<span style="font-family:黑体">标签库</span></title></wbr>
<wbr></head></wbr>
<wbr><body></wbr>
<wbr><h4><c:outvalue="<frm:parseNumber><span style="font-family:黑体">标签的使用</span>"></c:out></h4></wbr>
<wbr><hr></wbr>
<wbr></body></wbr>
<wbr><fmt:formatNumbertype="currency"var="money">188.8</fmt:formatNumber></wbr>
<wbr><li><span style="font-family:黑体">格式化前的数据为:</span><c:outvalue="${money}"></c:out></wbr>
<wbr><fmt:parseNumber var="money"type="currency">${money}</fmt:parseNumber></wbr>
<wbr><li><span style="font-family:黑体">格式化后的数据为</span>:<c:outvalue="${money}"></c:out></wbr>
<wbr><li><span style="font-family:黑体">可以对格式化的后的数据进行运算:</span><wbr></wbr></wbr>
<wbr><c:outvalue="${money+200}"></c:out></wbr>
<wbr><li><span style="font-family:黑体">对百分比进行格式化</span>98%<span style="font-family:黑体">为:</span></wbr>
<wbr><fmt:parseNumbertype="percent">98%</fmt:parseNumber></wbr>
</html>
【代码解析】:
(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”]
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[dateStyle=”default|short|medium|long|full”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[timeStyle=”default|short|medium|long|full”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[timeZone=”timeZone”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[var=”name”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=”page|request|session|application”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
/>
参数说明见表9-7。
表9-7<wbr><fmt:formatDate><span style="font-family:黑体">标签属性说明</span></wbr>
<wbr></wbr>
属性名 |
说明 |
EL |
类型 |
必须 |
默认值 |
value |
将要格式化的日期对象。 |
是 |
Java.util.Date |
是 |
无 |
type |
显示的部分(日期、时间或者两者)。 |
是 |
String |
否 |
date |
partten |
格式化的样式。 |
是 |
String |
否 |
无 |
dateStyle |
设定日期的显示方式。 |
是 |
String |
否 |
default |
timeStyle |
设定时间的显示方式。 |
是 |
String |
否 |
default |
timeZone |
设定使用的时区。 |
是 |
String |
否 |
当地所用时区 |
var |
存储已格式化的日期或时间。 |
否 |
String |
否 |
无 |
scope |
指定var存储的JSP范围。 |
否 |
String |
否 |
无 |
<wbr></wbr>
其中type属性参数说明见表9-8。
表9-8<wbr>type<span style="font-family:黑体">属性参数说明</span></wbr>
<wbr></wbr>
参数名 |
说明 |
time |
只显示时间 |
date |
只显示时期 |
both |
显示日期和时间 |
<wbr></wbr>
【示例程序】:代码9.16实现了对日期的格式化,使用了type、dateStyle、timeStyle等属性。
代码9.16<wbr><fmt:formatDate><span style="font-family:黑体">标签示例:</span>fmtdemo03.jsp</wbr>
<%@ page language="java"pageEncoding="gbk"%>
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:useBean id="date"class="java.util.Date"></jsp:useBean>
<html>
<wbr><head><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><title>I18N<span style="font-family:黑体">标签库</span></title></wbr></wbr></wbr>
<wbr></head></wbr>
<wbr><body></wbr>
<fmt:formatDatevalue="${date}"></fmt:formatDate><br>
<fmt:formatDatevalue="${date}"type="both"></fmt:formatDate><br>
<fmt:formatDatevalue="${date}" type="both" dateStyle="default"
<wbr>timeStyle="default"></fmt:formatDate><br></wbr>
<wbr><wbr><fmt:formatDate value="${date}" type="both"dateStyle="short"</wbr></wbr>
<wbr>timeStyle="short"></fmt:formatDate><br></wbr>
<wbr><wbr><fmt:formatDate value="${date}" type="both"dateStyle="long"</wbr></wbr>
<wbr>timeStyle="long"></fmt:formatDate><br></wbr>
<wbr><wbr><fmt:formatDate value="${date}" type="both"dateStyle="full"</wbr></wbr>
timeStyle="full"></fmt:formatDate><br>
<wbr><wbr><fmt:formatDate value="${date}" type="both"dateStyle="full"</wbr></wbr>
timeStyle="full"></fmt:formatDate><br>
<wbr><wbr></body></wbr></wbr>
</html>
【代码解析】:
(1)首先通过配置JavaBean在页面上实例化java.util.Date对象。实现代码如下:
<jsp:useBean id="date"class="java.util.Date"></jsp:useBean>
(2)对日期对象进行格式化时${date}是一个日期对象,如果给value设的值为String时程序会报错。
(3)设置type为both时,将显示日期和时间,同时示例中依次改变dateStyle和timeStyle的值作为比较。
<wbr></wbr>
使用IE的语言标签可以设置语言种类。
4.<fmt:parseDate>标签
<fmt:parseDate>标签主要将字符串类型的时间或日期转化为时间或日期对象。
【语法1】:
<fmt:parseDate value=”date”[type=”time|date|both”]
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[parseLocale=”locale”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[dateStyle=”default|short|medium|long|full”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[timeStyle=”default|short|medium|long|full”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[timeZone=”timezone”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[var=”name”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=”page|request|session|application”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
/>
【语法2】:
<fmt:parseDate<wbr>[type=”time|date|both”]</wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[pattern=”pattern”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[parseLocale=”locale”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[dateStyle=”default|short|medium|long|full”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[timeStyle=”default|short|medium|long|full”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[timeZone=”timezone”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[var=”name”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>[scope=”page|request|session|application”]</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
><wbr></wbr>
Date
</fmt:parseDate>
【参数说明】参数说明见表9-9.
表9-9<wbr><fmt:parseData><span style="font-family:黑体">标签属性说明</span></wbr>
<wbr></wbr>
属性名 |
说明 |
EL |
类型 |
必须 |
默认值 |
value |
将要格式化的日期时间 |
是 |
String |
是 |
无 |
type |
字符串的类型(日期、时间或全部) |
EL |
String |
是 |
date |
pattern |
字符串使用的时间样式 |
是 |
String |
是 |
无 |
parseLocale |
取代默认地区设定 |
是 |
String |
是 |
默认地区 |
dateStyle |
字符串使用的日期显示方式 |
是 |
String |
否 |
default |
timeStyle |
字符串使用的时间显示格式 |
是 |
String |
否 |
default |
timeZone |
使用的时区 |
是 |
String |
否 |
当地区时 |
var |
使用var定义的名字保存对象 |
否 |
String |
否 |
无 |
scope |
var的JSP范围 |
否 |
String |
否 |
page |
<wbr></wbr>
【示例代码】:代码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="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:useBean id="date"class="java.util.Date"></jsp:useBean>
<html>
<wbr><head><wbr><wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><title>I18N<span style="font-family:黑体">标签库</span></title></wbr></wbr></wbr>
<wbr></head></wbr>
<wbr><body></wbr>
<wbr><wbr><H4><c:outvalue="<frm:parseDate><span style="font-family:黑体">标签的使用</span>"></c:out></H4></wbr></wbr>
<wbr><wbr><hr></wbr></wbr>
<fmt:formatDate value="${date}" var="a"type="both"
dateStyle="full"timeStyle="full"></fmt:formatDate>
<fmt:parseDate var="b" type="both"dateStyle="full" timeStyle="full">
${a}
</fmt:parseDate>
<wbr><wbr> <%</wbr></wbr>
<wbr><wbr>out.println(pageContext.getAttribute("b").toString());</wbr></wbr>
<wbr><wbr>out.println("<br>");</wbr></wbr>
<wbr><wbr>out.println(pageContext.getAttribute("b").hashCode());</wbr></wbr>
<wbr><wbr> %></wbr></wbr>
<wbr><wbr></body></wbr></wbr>
</html>
【代码解析】:
(1)使用<fmt:formatDate>把日期对象格式化成字符串。
(2)使用<fmt:parseDate>把字符串对象转化为日期对象,注意同(1)中的参数对比,可以发现两者是一个互逆的过程。
(3)使用Java脚本进行测试Date对象的toString()方法可以输出时间字符串。hashCode()可以得到一个对象的hashCode。该方法只能应用于对象,因此可以证明得到的是一个日期对象。
提示:<fmt:formatDate>和<fmt:parseDate>是相反的运算过程,可以对照学习。本例中的Java脚本的作用是为了证明生成的的确是一个对象。
相关推荐
jstl标签学习笔记
el和jstl学习笔记 很好很全 欢迎瞎子
JSTL学习笔记,对使用JSTL标签使用者非常有帮助
jstl总结资料自己的学习笔记jstl总结资料自己的学习笔记jstl总结资料自己的学习笔记
JSTL学习笔记共享给大家
JSTL & EL 学习笔记JSTL & EL 学习笔记
Ognl_JSTL_学习笔记
EL&JSTL笔记学习笔记
个人认为很好的JSTL的学习笔记,对JAVA开发的爱好者提供一个帮助,希望你们笑纳
全面介绍了JSTL标签库的应用,具用很强的实用性,适合大部分的java开发者学习和参考
《JSP & Servlet学习笔记(第2版)》涵盖了文本处理、图片验证、自动登录、验证过滤器、压缩处理、JSTL应用与操作等各种实用范例。 《JSP & Servlet学习笔记(第2版)》以“微博”项目贯穿全书,将JSP & Servlet技术应用...
jsp页面标签库常用标签帮助文档,带学习笔记,对JSTL标签介绍很详细。英文版的。
JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,汇集了学生在学习JSP&Servlet或认证考试时遇到的概念、操作、应用等各种问题及解决方案。 本书针对Servlet3.0的新功能全面改版,无论章节架构...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...
书 名:JSP & Servlet学习笔记(第2版) 作 者:(台湾)林信良 著 出 版 社:清华大学出版社 出版时间:2012-5-1 ISBN:9787302283669 纸书页数:456页 定 价:¥ 58.00 内容简介: 本书是作者多年来...
JSP四大域对象和JSTL、EL表达式
书 名: JSP网络编程学习 封面 笔记 作 者:傅进勇 李波 出版社: 电子工业出版社 出版时间: 2008 全书内容分为7篇,共23章,第一篇为“JSP应用开发基础”,主要讲述JSP技术背景情况、JSP技术的基本原理及开发...
JSP JSTL、EL表达式 SSH 图形随机码 AJax笔记.txt
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。, 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...