0x01 格式化标签
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。
引用格式化标签库的语法如下:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
标签 |
描述 |
|
使用指定的格式或精度格式化数字 |
|
解析一个代表着数字,货币或百分比的字符串 |
|
使用指定的风格或模式格式化日期和时间 |
|
解析一个代表着日期或时间的字符串 |
|
绑定资源 |
|
指定地区 |
|
绑定资源 |
|
指定时区 |
|
指定时区 |
|
显示资源配置文件信息 |
|
设置request的字符编码 |
0x02 小例子
// 目录结构
├── src
│ └── main
│ └── webapp
│ └── com
│ │ └── ...
│ └── WEB-INF
│ │ └── web.xml
│ ├── ...
│ └── JSTL库测试
│ │ ├── ...
0x02.1
0x02.1.1 语法
<fmt:formatNumber> 标签用于格式化数字, 百分比, 货币
<fmt:formatNumber> 标签语法格式如下:
<fmt:formatNumber
value="<string>"
type="<string>"
pattern="<string>"
currencyCode="<string>"
currencySymbol="<string>"
groupingUsed="<string>"
maxIntegerDigits="<string>"
minIntegerDigits="<string>"
maxFractionDigits="<string>"
minFractionDigits="<string>"
var="<string>"
scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
value |
要显示的数字 |
是 |
无 |
type |
NUMBER,CURRENCY,或 PERCENT类型 |
否 |
Number |
pattern |
指定一个自定义的格式化模式用与输出 |
否 |
无 |
currencyCode |
货币码(当type=”currency”时) |
否 |
取决于默认区域 |
currencySymbol |
货币符号 (当 type=”currency”时) |
否 |
取决于默认区域 |
groupingUsed |
是否对数字分组 (TRUE 或 FALSE) |
否 |
true |
maxIntegerDigits |
整型数最大的位数 |
否 |
无 |
minIntegerDigits |
整型数最小的位数 |
否 |
无 |
maxFractionDigits |
小数点后最大的位数 |
否 |
无 |
minFractionDigits |
小数点后最小的位数 |
否 |
无 |
var |
存储格式化数字的变量 |
否 |
Print to page |
scope |
var属性的作用域 |
否 |
page |
如果type属性为percent或number那么可以使用其它几个格式化数字属性
maxIntegerDigits属性和minIntegerDigits属性允许您指定整数的长度,若实际数字超过了maxIntegerDigits所指定的最大值,则数字将会被截断
有一些属性允许您指定小数点后的位数,minFractionalDigits属性和maxFractionalDigits属性允许您指定小数点后的位数,若实际的数字超出了所指定的范围,则这个数字会被截断
数字分组可以用来在每三个数字中插入一个逗号,groupingIsUsed属性用来指定是否使用数字分组,当与minIntegerDigits属性一同使用时,就必须要很小心地来获取预期的结果了
我们或许会使用pattern属性,这个属性可以让您在对数字编码时包含指定的字符
pattern属性 |
|
符号 |
描述 |
0 |
代表一位数字 |
E |
使用指数格式 |
# |
代表一位数字,若没有则显示 0,前导 0 和追尾 0 不显示。 |
. |
小数点 |
, |
数字分组分隔符 |
; |
分隔格式 |
- |
使用默认负数前缀 |
% |
百分数 |
? |
千分数 |
¤ |
货币符号,使用实际的货币符号代替 |
X |
指定可以作为前缀或后缀的字符 |
‘ |
在前缀或后缀中引用特殊字符 |
0x02.1.2 小例子
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_formatnumber.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<c:set var="balance" value="120000.2309"/>
<html>
<head>
<title>jstl_fmt_formatnumber</title>
</head>
<body>
<h3>数字格式化:</h3>
<p>格式化数字(1): <fmt:formatNumber value="${balance}" type="currency"/></p>
<p>格式化数字(2): <fmt:formatNumber type="number" maxIntegerDigits="3" value="${balance}"/></p>
<p>格式化数字(3): <fmt:formatNumber type="number" maxFractionDigits="3" value="${balance}"/></p>
<p>格式化数字(4): <fmt:formatNumber type="number" groupingUsed="false" value="${balance}"/></p>
<p>格式化数字(5): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}"/></p>
<p>格式化数字(6): <fmt:formatNumber type="percent" minFractionDigits="10" value="${balance}"/></p>
<p>格式化数字(7): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}"/></p>
<p>格式化数字(8): <fmt:formatNumber type="number" pattern="###.###E0" value="${balance}"/></p>
<p>美元: <fmt:setLocale value="en_US"/> <fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_formatnumber.jsp
0x02.2
0x02.2.1 语法
<fmt:parseNumber>标签用来解析数字,百分数,货币
<fmt:parseNumber>语法格式如下:
<fmt:parseNumber
value="<string>"
type="<string>"
pattern="<string>"
parseLocale="<string>"
integerOnly="<string>"
var="<string>"
scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
value |
要解析的数字 |
否 |
Body |
type |
NUMBER, CURRENCY, 或 PERCENT |
否 |
number |
parseLocale |
解析数字时所用的区域 |
否 |
默认区域 |
integerOnly |
是否只解析整型数(true)或浮点数(false) |
否 |
false |
pattern |
自定义解析模式 |
否 |
无 |
timeZone |
要显示的日期的时区 |
否 |
默认时区 |
var |
存储待解析数字的变量 |
否 |
Print to page |
scope |
var属性的作用域 |
否 |
page |
pattern属性与<fmt:formatNumber>标签中的pattern有相同的作用
在解析时,pattern属性告诉解析器期望的格式
0x02.2.2 小例子
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_parsenumber.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<c:set var="balance" value="1250003.350"/>
<fmt:parseNumber var="i" type="number" value="${balance}"/>
<fmt:parseNumber var="j" integerOnly="true" type="number" value="${balance}"/>
<html>
<head>
<title>jstl_fmt_parsenumber</title>
</head>
<body>
<h3>数字解析:</h3>
<p>数字解析(1): <c:out value="${i}"/></p>
<p>数字解析(2): <c:out value="${j}"/></p>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_parsenumber.jsp
0x02.3
0x02.3.1 语法
<fmt:formatDate> 标签用于使用不同的方式格式化日期
<fmt:formatDate> 标签语法格式如下:
<fmt:formatDate
value="<string>"
type="<string>"
dateStyle="<string>"
timeStyle="<string>"
pattern="<string>"
timeZone="<string>"
var="<string>"
scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
value |
要显示的日期 |
是 |
无 |
type |
DATE, TIME, BOTH |
否 |
date |
dateStyle |
FULL, LONG, MEDIUM, SHORT, DEFAULT |
否 |
default |
timeStyle |
FULL, LONG, MEDIUM, SHORT, DEFAULT |
否 |
default |
pattern |
自定义格式模式 |
否 |
无 |
timeZone |
显示日期的时区 |
否 |
默认时区 |
var |
存储格式化日期的变量名 |
否 |
显示在页面 |
scope |
存储格式化日志变量的范围 |
否 |
页面 |
标签格式模式-pattern属性 |
|
|
代码 |
描述 |
实例 |
G |
时代标志 |
AD |
y |
不包含纪元的年份 如果年份小于 10,则前面会加上 0 |
2002 |
M |
月份数字。一位数的月份没有前导零 |
April & 04 |
d |
月中的某一天。一位数的日期没有前导零 |
20 |
h |
12 小时制的小时。一位数的小时数没有前导零 |
12 |
H |
24 小时制的小时。一位数的小时数没有前导零 |
0 |
m |
分钟。一位数的分钟数没有前导零 |
45 |
s |
秒。一位数的秒数没有前导零 |
52 |
S |
毫秒 |
970 |
E |
周几 |
Tuesday |
D |
一年中的第几天 |
180 |
F |
一个月中的第几个周几 |
2 (一个月中的第二个星期三) |
w |
一年中的第几周r |
27 |
W |
一个月中的第几周 |
2 |
a |
a.m./p.m. 指示符 |
PM |
k |
小时(12 小时制的小时) |
24 |
K |
小时(24 小时制的小时) |
0 |
z |
时区 |
中部标准时间 |
‘ |
|
转义文本 |
‘’ |
|
单引号 |
0x02.3.2 小例子
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_formatdate.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<c:set var="now" value="<%=new java.util.Date()%>"/>
<html>
<head>
<title>jstl_fmt_formatdate</title>
</head>
<body>
<h3>日期格式化:</h3>
<p>日期格式化(1): <fmt:formatDate type="time" value="${now}"/></p>
<p>日期格式化(2): <fmt:formatDate type="date" value="${now}"/></p>
<p>日期格式化(3): <fmt:formatDate type="both" value="${now}"/></p>
<p>日期格式化(4): <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${now}"/></p>
<p>日期格式化(5): <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${now}"/></p>
<p>日期格式化(6): <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${now}"/></p>
<p>日期格式化(7): <fmt:formatDate pattern="yyyy-MM-dd" value="${now}"/></p>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_formatdate.jsp
0x02.4
0x02.4.1 语法
<fmt:parseDate> 标签用于解析日期
<fmt:parseDate> 标签语法格式如下:
<fmt:parseDate
value="<string>"
type="<string>"
dateStyle="<string>"
timeStyle="<string>"
pattern="<string>"
timeZone="<string>"
parseLocale="<string>"
var="<string>"
scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
value |
要显示的日期 |
是 |
无 |
type |
DATE, TIME, 或 BOTH |
否 |
date |
dateStyle |
FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
否 |
default |
timeStyle |
FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
否 |
default |
pattern |
自定义格式模式 |
否 |
无 |
timeZone |
显示日期的时区 |
否 |
默认时区 |
var |
存储格式化日期的变量名 |
否 |
显示在页面 |
scope |
存储格式化日志变量的范围 |
否 |
页面 |
0x02.4.2 小例子
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_parsedate.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_parsedate</title>
</head>
<body>
<h3>日期解析: 11-01-2017 </h3>
<c:set var="now" value="11-01-2017"/>
<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy"/>
<p>解析后的日期为: <c:out value="${parsedEmpDate}"/></p>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_parsedate.jsp
0x02.5
0x02.5.1 语法
<fmt:bundle> 标签将指定的资源束对出现在 <fmt:bundle> 标签中的 <fmt:message> 标签可用
这样我们就可以省去为每个 <fmt:message>标签指定资源束的很多步骤
比如说,下面的两个 <fmt:bundle> 块将产生同样的输出:
<fmt:bundle basename="cn.twle.demo">
<fmt:message key="count.title"/>
</fmt:bundle>
<fmt:bundle basename="cn.twle.demo" prefix="count.">
<fmt:message key="title"/>
</fmt:bundle>
<fmt:bundle> 标签语法格式如下:
<fmt:bundle baseName="<string>" prefix="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
basename |
指定被载入的资源束的基础名称 |
是 |
无 |
资源束:
资源束包含区域特定对象
资源束包含键值对
当我们的程序需要区域特定资源时,可以将所有的关键词对所有的locale共享,但是也可以为locale指定转换后的值
资源束可以帮助提供指定给locale的内容
一个Java资源束文件包含一系列的键值对
0x02.5.2 小例子
首先我们来建立一个资源束
在src/main/resources目录下建立一个demo_zh_CN.properties文件
内容如下:
count.one=\u58f9
count.two=\u8d30
count.three=\u53c1
注意-1: properties文件里的中文内容要转成 Unicode
注意-2: 没有resources目录的,自己在src/main创建一个即可
然后再创建一个demo_en_US.properties文件
内容如下:
count.one=first
count.two=second
count.three=three
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_bundle.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_bundle</title>
</head>
<body>
<%--有prefix属性的例子--%>
<fmt:bundle basename="demo" prefix="count.">
<div><fmt:message key="one"/></div>
<div><fmt:message key="two"/></div>
<div><fmt:message key="three"/></div>
</fmt:bundle>
<hr/>
<%--无prefix属性的例子--%>
<fmt:bundle basename="demo">
<div><fmt:message key="count.one"/></div>
<div><fmt:message key="count.two"/></div>
<div><fmt:message key="count.three"/></div>
</fmt:bundle>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_bundle.jsp
0x02.6
0x02.6.1 语法
<fmt:setLocale> 标签用来将给定的区域存储在locale配置变量中
<fmt:setLocale>标签语法格式如下:
<fmt:setLocale value="<string>" variant="<string>" scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
value |
指定 ISO-639 语言码和 ISO-3166 国家码 |
是 |
en_US |
variant |
特定浏览器变体 |
否 |
无 |
scope |
Locale配置变量的作用域 |
否 |
Page |
资源束:
资源束包含区域特定对象
资源束包含键值对
当我们的程序需要区域特定资源时,可以将所有的关键词对所有的locale共享,但是也可以为locale指定转换后的值
资源束可以帮助提供指定给locale的内容
一个Java资源束文件包含一系列的键值对
0x02.6.2 小例子
demo_zh_CN.properties与demo_en_US.properties文件的创建方法
请查看<fmt:bundle>标签的小例子
谢谢
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_setlocale.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_setlocale</title>
</head>
<body>
<%--默认显示中文--%>
<fmt:bundle basename="demo" prefix="count.">
<div><fmt:message key="one"/></div>
<div><fmt:message key="two"/></div>
<div><fmt:message key="three"/></div>
</fmt:bundle>
<hr/>
<%--修改地区为美国,这样就会自动显示美国的词汇--%>
<fmt:setLocale value="en_US"/>
<fmt:bundle basename="demo" prefix="count.">
<div><fmt:message key="one"/></div>
<div><fmt:message key="two"/></div>
<div><fmt:message key="three"/></div>
</fmt:bundle>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_setlocale.jsp
0x02.7 /
0x02.7.1 语法
<fmt:setBundle>标签用来载入一个资源束,然后将它存储在作用域中已命名的变量或bundle配置变量中
<fmt:setBundle> 语法格式如下:
<fmt:setBundle baseName="<string>" var="<string>" scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
basename |
资源束家族基础名称 |
是 |
无 |
var |
存储新资源束的变量 |
否 |
Replace default |
scope |
变量的作用域 |
否 |
Page |
0x02.7.2 语法
<fmt:message> 标签映射一个关键字给局部消息,然后执行参数替换
<fmt:message> 标签语法格式如下:
<fmt:message key="<string>" bundle="<string>" var="<string>" scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
是否必要 |
默认值 |
key |
要检索的消息关键字 |
否 |
Body |
bundle |
要使用的资源束 |
否 |
默认资源束 |
var |
存储局部消息的变量名 |
否 |
Print to page |
scope |
var属性的作用域 |
否 |
Page |
0x02.7.3 小例子
demo_zh_CN.properties文件的创建方法
请查看<fmt:bundle>标签的小例子
谢谢
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_setbundle-fmt_message.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_setbundle-fmt_message</title>
</head>
<body>
<fmt:setLocale value="zh_CN"/>
<fmt:setBundle basename="demo" var="lang"/>
<div><fmt:message key="count.one" bundle="${lang}"/></div>
<div><fmt:message key="count.two" bundle="${lang}"/></div>
<div><fmt:message key="count.three" bundle="${lang}"/></div>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_setbundle-fmt_message.jsp
0x02.8
0x02.8.1 语法
<fmt:timeZone> 标签用来指定时区, 供其它标签使用
<fmt:timeZone> 标签语法格式如下:
<fmt:timeZone value="<string>" />
标签有如下属性 |
|
|
|
属性 |
描述 |
是否必要 |
默认值 |
value |
时区 |
是 |
无 |
0x02.8.2 小例子
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_timezone.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_timezone</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date()%>"/>
<div>Formatting: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long"/></div>
<c:forEach var="zone" items="<%=java.util.TimeZone.getAvailableIDs()%>">
<div>
<c:out value="${zone}"/>:
<fmt:timeZone value="${zone}">
<fmt:formatDate value="${now}" timeZone="${zn}" type="both"/>
</fmt:timeZone>
</div>
</c:forEach>
<hr/>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_timezone.jsp
0x02.9
0x02.9.1 语法
<fmt:setTimeZone> 标签用来复制一个时区对象至指定的作用域
<fmt:setTimeZone> 标签语法格式如下:
<fmt:setTimeZone value="<string>" var="<string>" scope="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
value |
时区 |
是 |
无 |
var |
存储新时区的变量名 |
否 |
Replace default |
scope |
变量的作用域 |
否 |
Page |
0x02.9.2 小例子
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_settimezone.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_settimezone</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date()%>"/>
<div>当前时区时间: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long"/></div>
<fmt:setTimeZone value="GMT-0"/>
<hr/>
<div>修改为GMT-0时区</div>
<div>Date in Changed Zone: <fmt:formatDate value="${now}" type="both" timeStyle="long" dateStyle="long"/></div>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_settimezone.jsp
0x02.10
0x02.10.1 语法
<fmt:requestEncoding>标签用来指定返回给Web应用程序的表单编码类型
<fmt:requestEncoding> 语法格式如下:
<fmt:requestEncoding value="<string>"/>
标签有如下属性 |
|
|
|
属性 |
描述 |
必须 |
默认值 |
key |
字符编码集的名称, 用于解码 request 参数 |
是 |
无 |
可以使用 <fmt:requestEncoding>标签来指定字符集,用于解码来自表单的数据
在字符集不是ISO-8859-1时必须使用这个标签
由于大多数浏览器在它们的请求中不包含Content-Type头,所以需要这个标签
<fmt:requestEncoding>标签的目的就是用来指定请求的Content-Type
我们必须指定一个Content-Type,就算response是通过Page指令的contentType属性来编码
这是因为response的实际区域可能与Page指令所指定的不同
如果页面包含I18N-capable格式行为用于设置response的locale属性
(通过调用ServletResponse.setLocale()方法),任何在页面中指定的编码集将会被覆盖
0x02.10.2 小例子
demo_zh_CN.properties文件的创建方法
请查看<fmt:bundle>标签的小例子
谢谢
// 文件地址: ./src/main/webapp/JSTL库测试/
// 文件名称: jstl_fmt_requestencoding.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>jstl_fmt_requestencoding</title>
</head>
<body>
<fmt:requestEncoding value="UTF-8"/>
<fmt:setLocale value="zh_CN"/>
<fmt:setBundle basename="demo" var="lang"/>
<div><fmt:message key="count.one" bundle="${lang}"/></div>
<div><fmt:message key="count.two" bundle="${lang}"/></div>
<div><fmt:message key="count.three" bundle="${lang}"/></div>
</body>
</html>
// 打开: http://127.0.0.1:8081/mavenJspTest_war/JSTL库测试/jstl_fmt_requestencoding.jsp