- 浏览: 71587 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (46)
- 行业应用 (10)
- Struts1.X学习开发应用 (7)
- Struts2学习开发应用 (2)
- Hibernate学习开发应用 (8)
- Spring2.5学习开发应用 (3)
- IBatis开发与应用 (2)
- Ajax学习开发应用 (3)
- DWR学习开发应用 (2)
- JQuery学习开发应用 (2)
- Ext学习开发应用 (2)
- WebService学习开发应用 (2)
- xfire学习应用开发 (2)
- xml学习开发应用 (2)
- java基础学习 (2)
- J2EE学习开发应用 (4)
- java Awt/Swing学习开发应用 (2)
- Java Web 学习开发应用 (17)
- J2SE基础学习 (2)
- java 网络编程学习开发应用 (2)
- 设计模式 (3)
- Oracle学习 (2)
- BD2学习 (2)
- 其他数据库 (2)
- SQL学习 (2)
- 报表工具 (6)
- 工作流 (2)
最新评论
JSTL详解formatting标签
看到 I** 就应该想到知识“国际化”, I** formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是:
q 国际化核心标签: <fmt:setLocale> 、 <fmt:bundle> 、 <fmt:setBundle> 、 <fmt:message> 、 <fmt:param> 、 <fmt:requestEncoding> 。
q 格式化标签: <fmt:timeZone> 、 <fmt:setTimeZone> 、 <fmt:formatNumber> 、 <fmt:parseNumber> 、 <fmt:formatDate> 、 <fmt:parseDate> 。
下面只选择其中常见的一些标签和属性进行介绍。
9.5.1 用于设置本地化环境的 <fmt:setLocale> 标签
<fmt:setLocale> 标签用于设置 Locale 环境。它的属性和描述如表 9.17 所示:
表 9.17 <fmt:setLocale> 标签属性和说明
属性
描述
value
Locale 环境的指定,可以是 java.util.Locale 或 String 类型的实例
scope
Locale 环境变量的作用范围(可选)
下面看一个示例:
<fmt:setLocale value="zh_TW"/>
表示设置本地环境为繁体中文。
9.5.2 用于资源文件绑定的 <fmt:bundle> 、 <fmt:setBundle> 标签
这两组标签用于资源配置文件的绑定,唯一不同的是 <fmt:bundle> 标签将资源配置文件绑定于它标签体中的显示, <fmt:setBundle> 标签则允许将资源配置文件保存为一个变量,在之后的工作可以根据该变量来进行。
根据 Locale 环境的不同将查找不同后缀的资源配置文件,这点在国际化的任何技术上都是一致的,通常来说,这两种标签单独使用是没有意义的,它们都会与 I** formatting 标签库中的其他标签配合使用。它们的属性和描述如表 9.18 所示:
表 9.18 <fmt:bundle> 、 <fmt:setBundle> 标签属性和说明
属性
描述
basename
资源配置文件的指定,只需要指定文件名而无须扩展名,二组标签共有的属性
var
<fmt:setBundle> 独有的属性,用于保存资源配置文件为一个变量
scope
变量的作用范围
下面看一个示例
<fmt:setLocale value="zh_CN"/>
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>
该示例将会查找一个名为 applicationMessage_zh_CN.properties 的资源配置文件,来作为显示的 Resource 绑定。
9.5.3 用于显示资源配置文件信息的 <fmt:message> 标签
用于信息显示的标签,将显示资源配置文件中定义的信息。它的属性和描述如表 9.19 所示:
表 9.19 <fmt:message> 标签属性和说明
属性
描述
key
资源配置文件的“键”指定
bundle
若使用 <fmt:setBundle> 保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找
var
将显示信息保存为一个变量
scope
变量的作用范围
下面看一个示例:
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>
<fmt:bundle basename="applicationAllMessage">
<fmt:message key="userName" />
<p>
<fmt:message key="passWord" bundle="${applicationBundle}" />
</fmt:bundle>
该示例使用了两种资源配置文件的绑定的做法,“ applicationMessage ”资源配置文件利用 <fmt:setBundle> 标签被赋于了变量“ applicationBundle ”,而作为 <fmt:bundle> 标签定义的“ applicationAllMessage ”资源配置文件作用于其标签体内的显示。
q 第一个 <fmt:message> 标签将使用“ applicationAllMessage ”资源配置文件中“键”为“ userName ”的信息显示。
q 第二个 <fmt:message> 标签虽然被定义在 <fmt:bundle> 标签体内,但是它使用了 bundle 属性,因此将指定之前由 <fmt:setBundle> 标签保存的“ applicationMessage ”资源配置文件,该“键”为“ passWord ”的信息显示。
9.5.4 用于参数传递的 <fmt:param> 标签
<fmt:param> 标签应该位于 <fmt:message> 标签内,将为该消息标签提供参数值。它只有一个属性 value 。
<fmt:param> 标签有两种使用版本,一种是直接将参数值写在 value 属性中,另一种是将参数值写在标签体内。
9.5.6 用于为请求设置字符编码的 <fmt:requestEncoding> 标签
<fmt:requestEncoding> 标签用于为请求设置字符编码。它只有一个属性 value ,在该属性中可以定义字符编码。
9.5.7 用于设定时区的 <fmt:timeZone> 、 <fmt:setTimeZone> 标签
这两组标签都用于设定一个时区。唯一不同的是 <fmt:timeZone> 标签将使得在其标签体内的工作可以使用该时区设置, <fmt:setBundle> 标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。它们的属性和描述如表 9.20 所示:
表 9.20 <fmt:timeZone> 、 <fmt:setTimeZone> 标签 属性和说明
属性
描述
value
时区的设置
var
<fmt:setTimeZone> 独有的属性,用于保存时区为一个变量
scope
变量的作用范围
9.5.8 用于格式化数字的 <fmt:formatNumber> 标签
<fmt: formatNumber > 标 签用于格式化数字。它的属性和描述如表 9.21 所示:
表 9.21 <fmt:formatNumber> 标签属性和说明
属性
描述
value
格式化的数字,该数值可以是 String 类型或 java.lang.Number 类型的实例
type
格式化的类型
pattern
格式化模式
var
结果保存变量
scope
变量的作用范围
maxIntegerDigits
指定格式化结果的最大值
minIntegerDigits
指定格式化结果的最小值
maxFractionDigits
指定格式化结果的最大值,带小数
minFractionDigits
指定格式化结果的最小值,带小数
<fmt:formatNumber> 标签实际是对应 java.util.NumberFormat 类, type 属性的可能值包括 currency (货币)、 number (数字)和 percent (百分比)。
下面看一个示例。
<fmt:formatNumber value="1000.888" type="currency" var="money"/>
该结果将被保存在“ money ”变量中,将根据 Locale 环境显示当地的货币格式。
9.5.9 用于解析数字的 <fmt:parseNumber> 标签
<fmt:parseNumber> 标签用于解析一个数字,并将结果作为 java.lang.Number 类的实例返回。 <fmt:parseNumber> 标签看起来和 <fmt:formatNumber> 标签的作用正好相反。它的属性和描述如表 9.22 所示:
表 9.22 <fmt:parseNumber> 标签属性和说明
属性
描述
value
将被解析的字符串
type
解析格式化的类型
pattern
解析格式化模式
var
结果保存变量,类型为 java.lang.Number
scope
变量的作用范围
parseLocale
以本地化的形式来解析字符串,该属性的内容应为 String 或 java.util.Locale 类型的实例
下面看一个示例。
<fmt:parseNumber value="15%" type="percent" var="num"/>
解析之后的结果为“ 0.15 ”。
9.5.10 用于格式化日期的 <fmt:formatDate> 标签
<fmt:formatDate> 标签用于格式化日期。它的属性和描述如表 9.23 所示:
表 9.23 <fmt:formatDate> 标签属性和说明
属性
描述
value
格式化的日期,该属性的内容应该是 java.util.Date 类型的实例
type
格式化的类型
pattern
格式化模式
var
结果保存变量
scope
变量的作用范围
timeZone
指定格式化日期的时区
<fmt:formatDate> 标签与 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签的关系密切。若没有指定 timeZone属性, 也可以通过 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签设定的时区来格式化最后的结果。
9.5.11 用于解析日期的 <fmt:parseDate> 标签
<fmt:parseDate> 标签用于解析一个日期,并将结果作为 java.lang.Date 类型的实例返回。 <fmt:parseDate> 标签看起来和 <fmt:formatDate> 标签的作用正好相反。它的属性和描述如表 9.24 所示:
表 9.24 <fmt:parseDate> 标签属性和说明
属性
描述
value
将被解析的字符串
type
解析格式化的类型
pattern
解析格式化模式
var
结果保存变量,类型为 java.lang.Date
scope
变量的作用范围
parseLocale
以本地化的形式来解析字符串,该属性的内容为 String 或 java.util.Locale 类型的实例
timeZone
指定解析格式化日期的时区
<fmt:parseNumber> 和 <fmt:parseDate> 两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对 var 属性的字符串参数要求非常严格。就 JSP 页面的表示层前段来说,处理这种解析本不属于份内之事,因此 <fmt:parseNumber> 和 <fmt:parseDate> 两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在 Servlet 中。
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>My JSP 'fmt.jsp' starting page</title>
</head>
<body>
<c:set var="salary" value="3540.2301"/>
<c:set var="total" value="56225.2301"/>
<fmt:setLocale value="en_US"/>
currency:<fmt:formatNumber value="${salary}" type="currency" currencyCode="USD"/><br>
percent:<fmt:formatNumber value="${salary/total}" type="percent" maxFractionDigits="4"/><br>
<hr>
<jsp:useBean id="now" class="java.util.Date"></jsp:useBean>
<fmt:setLocale value="zh_CN"/>
full--><fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br>
long--><fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>
medium--><fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="medium"/><br>
default--><fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/><br>
short--><fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br>
</body>
</html>
今天是:<fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/><br>
现在是:<fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/>
结果:
今天是:公元 2007年10月19日 星期五
现在是:下午 20:04:11.484 CST
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<fmt:parseDate value="${param.date}" var="date" pattern="yyyy/MM/dd:HH:mm:ss>
<fmt:parseDate value="${param.isoDate}" var="isoDate" pattern="yyyyMMdd'T'HHmmss">
The input parameters must match the patterns, or the JSP will thrown an exception. This page does no error handling.
Input parameters:
Date: 2004/04/01:13:30:00 Java format: Thu Apr 01 13:30:00 CST 2004
isoDate: 20040531T235959 Java format: Mon May 31 23:59:59 CDT 2004
Dates
Tag Output
Attribute: value; required. Tag has no body.
<fmt:formatDate value="${date}" type="both"/>
2004-4-1 13:30:00
<fmt:formatDate value="${isoDate}" type="both"/>
2004-5-31 23:59:59
Attribute: type; optional. Indicates what to print: date, time, or both.
<fmt:formatDate value="${date}" type="date"/>
2004-4-1
<fmt:formatDate value="${isoDate}" type="time"/>
23:59:59
Attribute: dateStyle; optional. Varies the date format.
<fmt:formatDate value="${isoDate}" type="date" dateStyle="default"/>
2004-5-31
<fmt:formatDate value="${isoDate}" type="date" dateStyle="short"/>
04-5-31
<fmt:formatDate value="${isoDate}" type="date" dateStyle="medium"/>
2004-5-31
<fmt:formatDate value="${isoDate}" type="date" dateStyle="long"/>
2004年5月31日
<fmt:formatDate value="${isoDate}" type="date" dateStyle="full"/>
2004年5月31日 星期一
Attribute: timeStyle; optional. Varies the time format.
<fmt:formatDate value="${isoDate}" type="time" timeStyle="default"/>
23:59:59
<fmt:formatDate value="${isoDate}" type="time" timeStyle="short"/>
下午11:59
<fmt:formatDate value="${isoDate}" type="time" timeStyle="medium"/>
23:59:59
<fmt:formatDate value="${isoDate}" type="time" timeStyle="long"/>
下午11时59分59秒
<fmt:formatDate value="${isoDate}" type="time" timeStyle="full"/>
下午11时59分59秒 CDT
Attribute: pattern; optional. Inidcates date/time custom patterns.
<fmt:formatDate value="${date}" type="both" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/>
星期四, 四月 1, 2004 13:30:00 -0600
<fmt:formatDate value="${isoDate}" type="both" pattern="d MMM yy, h:m:s a zzzz/>
<fmt:formatDate value="${这里可以放日期和字符串}" pattern="yyyy年MM月dd日"/>
方法2:用Struts标签格式化输出
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
格式化时间如:2008-06-23 11:00:22
<bean:write name="msg" property="messageDate" format= "yyyy-MM-dd HH:mm:ss" />
格式化时间如:2008-06-23 11:00
<bean:write name="msg" property="messageDate" format= "yyyy-MM-dd HH:mm" />
格式化时间如:06-23
<bean:write name= "sdrecord " property= "sdTime " format= "MM-dd"/>
补充格式化数字:
数字,不足4位前面自动补0 如:04 输入0004
<bean:write name= "sdrecord " property= "sdTime " format= "0000 "/>
附Struts bean:write
首先要想使用struts的标签库,则必须在jsp中指定所使用的标签库地uri,即标签库的标准。引入方法如下:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
接下来就可使用该标签库中的标签了,前缀是bean。我们这篇文章主要介绍write标签,bean:write相 当于<%=request.getAttribute("something")%> 其中something是属性的名字。下面bean:write的详细介绍如下:
bean:write常用的属性有如下几个:
1。name,用来指定属性的名字
2。filter,用来指定是否屏蔽到属性值的HTML格式
3。property,用来指定name所代表的对象的属性名字
4。format,用来指定显示的时间,数字,日期等的格式
例子一:
某处设置了request.setAttribute("hello","hello world");
则在某个jsp页面中,用struts的write标签取出并显示的方式如下:
<bean:write name="hello"/>,则页面上显示出hello world。
例子二:
某处设置了request.setAttribute("bj","<font color='red>欢迎你</font>");
则在某个jsp页面中,用struts的write标签取出并按红色的方式显示的方式如下:
<bean:write name="bj" filter="false"/>,则页面上显示出红色的欢迎你。如果filter属性不设置为false,则默认为true,那么显示出的内容就为<font color='red>欢迎你</font>。
例子三:
某处设置了request.setAttribute("date",new Date());
则在某个jsp页面中,用struts的write标签取出并按指定方式显示日期的方法如下:
<bean:write name=“date”/>,此为默认的显示方法,显示出的时间为:Fri Mar 28 15:04:21 CST 2008
<bean:write name=“date” format="yyyy-MM-dd HH:mm:ss"/>,此为自己指定日期的显示格式,显示出的时间为2008-3-28 15:04:21
例子四:
某处设置了request.setAttribute("n",“1223333.333”);
则在某个jsp页面中,用struts的write标签取出并按指定方式显示数字的方法如下:
<bean:write name=“n”/>,此为默认的显示方法,显示出的数字位1223333.333
<bean:write name=“n” format="###,###.####"/>,此为自己指定数字的显示格式,显示出的时间为1,223,333.333
如果希望小数点后的不足四位时,缺位补0,则应
<bean:write name=“n” format="###,###.0000"/>,此为自己指定数字的显示格式,显示出的时间为1,223,333.3330
例子五:
假如有User类和Groupe类,User类有属性名字userName,年龄age,性别sex和所属的Groupe,Groupe类有属性组名groupeName,并均具有相应的get和set方法。
某处设置了request.setAttribute("user",new User("张三","20","男",new Groupe("三组")));
则在某个jsp页面中,用struts的write标签取出并按指定方式显示结构体的方法如下:
用户名:<input type="text" value="<bean:write name=“user” property="userName"/>">
年龄:<input type="text" value="<bean:write name=“user” property="age"/>">
性别:<input type="text" value="<bean:write name=“user” property="sex"/>">
组名:<input type="text" value="<bean:write name=“user” property="groupe.groupeName"/>">
JSTL 标签 fn 函数
函数
描述
fn:contains(string, substring)
如果参数string中包含参数substring,返回true
fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substring(忽略大小写),返回true
fn:endsWith(string, suffix)
如果参数 string 以参数suffix结尾,返回true
fn:escapeXml(string)
将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回
fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置
fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。
fn:length(item)
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。
fn:replace(string, before, after)
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果
fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素
fn:startsWith(string, prefix)
如果参数string以参数prefix开头,返回true
fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符
fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串
fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串
fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回
fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回
fn:trim(string)
去除参数string 首尾的空格,并将其返回
示例
${fn.substring(string,begin,end)}
来一个我自己测试用的代码
<%@ page contentType="text/html;charset=gbk"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<html>
<head>
<title>这个是 JSTL的 测试</title>
</head>
<body>
<c:set var="str" value="stringStRiNg"/>
<c:set var="t" value="tr"/>
<c:out value="${str} = ${fn:length(str)}"/>
<c:out value="${fn:toLowerCase(str)}"/>
<c:out value="${fn:toUpperCase(' ')}"/>
<c:out value="${fn:toUpperCase('AbCdEfg')}"/><br>
<c:out value="${fn:substring('asdfefg',0,3)}"/><br>
<c:out value="${fn:substringAfter('asdf','s')}"/><Br>
<c:out value="${fn:substringBefore(str,'g')}"/><Br>
<c:out value="${fn:trim(' sd dew e ')}"/><Br>
<c:out value=" d sd dew e "/><Br>
<c:out value="${fn:replace(str,'ing','IN')}"/><Br>
</body>
</html>
看到 I** 就应该想到知识“国际化”, I** formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是:
q 国际化核心标签: <fmt:setLocale> 、 <fmt:bundle> 、 <fmt:setBundle> 、 <fmt:message> 、 <fmt:param> 、 <fmt:requestEncoding> 。
q 格式化标签: <fmt:timeZone> 、 <fmt:setTimeZone> 、 <fmt:formatNumber> 、 <fmt:parseNumber> 、 <fmt:formatDate> 、 <fmt:parseDate> 。
下面只选择其中常见的一些标签和属性进行介绍。
9.5.1 用于设置本地化环境的 <fmt:setLocale> 标签
<fmt:setLocale> 标签用于设置 Locale 环境。它的属性和描述如表 9.17 所示:
表 9.17 <fmt:setLocale> 标签属性和说明
属性
描述
value
Locale 环境的指定,可以是 java.util.Locale 或 String 类型的实例
scope
Locale 环境变量的作用范围(可选)
下面看一个示例:
<fmt:setLocale value="zh_TW"/>
表示设置本地环境为繁体中文。
9.5.2 用于资源文件绑定的 <fmt:bundle> 、 <fmt:setBundle> 标签
这两组标签用于资源配置文件的绑定,唯一不同的是 <fmt:bundle> 标签将资源配置文件绑定于它标签体中的显示, <fmt:setBundle> 标签则允许将资源配置文件保存为一个变量,在之后的工作可以根据该变量来进行。
根据 Locale 环境的不同将查找不同后缀的资源配置文件,这点在国际化的任何技术上都是一致的,通常来说,这两种标签单独使用是没有意义的,它们都会与 I** formatting 标签库中的其他标签配合使用。它们的属性和描述如表 9.18 所示:
表 9.18 <fmt:bundle> 、 <fmt:setBundle> 标签属性和说明
属性
描述
basename
资源配置文件的指定,只需要指定文件名而无须扩展名,二组标签共有的属性
var
<fmt:setBundle> 独有的属性,用于保存资源配置文件为一个变量
scope
变量的作用范围
下面看一个示例
<fmt:setLocale value="zh_CN"/>
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>
该示例将会查找一个名为 applicationMessage_zh_CN.properties 的资源配置文件,来作为显示的 Resource 绑定。
9.5.3 用于显示资源配置文件信息的 <fmt:message> 标签
用于信息显示的标签,将显示资源配置文件中定义的信息。它的属性和描述如表 9.19 所示:
表 9.19 <fmt:message> 标签属性和说明
属性
描述
key
资源配置文件的“键”指定
bundle
若使用 <fmt:setBundle> 保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找
var
将显示信息保存为一个变量
scope
变量的作用范围
下面看一个示例:
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>
<fmt:bundle basename="applicationAllMessage">
<fmt:message key="userName" />
<p>
<fmt:message key="passWord" bundle="${applicationBundle}" />
</fmt:bundle>
该示例使用了两种资源配置文件的绑定的做法,“ applicationMessage ”资源配置文件利用 <fmt:setBundle> 标签被赋于了变量“ applicationBundle ”,而作为 <fmt:bundle> 标签定义的“ applicationAllMessage ”资源配置文件作用于其标签体内的显示。
q 第一个 <fmt:message> 标签将使用“ applicationAllMessage ”资源配置文件中“键”为“ userName ”的信息显示。
q 第二个 <fmt:message> 标签虽然被定义在 <fmt:bundle> 标签体内,但是它使用了 bundle 属性,因此将指定之前由 <fmt:setBundle> 标签保存的“ applicationMessage ”资源配置文件,该“键”为“ passWord ”的信息显示。
9.5.4 用于参数传递的 <fmt:param> 标签
<fmt:param> 标签应该位于 <fmt:message> 标签内,将为该消息标签提供参数值。它只有一个属性 value 。
<fmt:param> 标签有两种使用版本,一种是直接将参数值写在 value 属性中,另一种是将参数值写在标签体内。
9.5.6 用于为请求设置字符编码的 <fmt:requestEncoding> 标签
<fmt:requestEncoding> 标签用于为请求设置字符编码。它只有一个属性 value ,在该属性中可以定义字符编码。
9.5.7 用于设定时区的 <fmt:timeZone> 、 <fmt:setTimeZone> 标签
这两组标签都用于设定一个时区。唯一不同的是 <fmt:timeZone> 标签将使得在其标签体内的工作可以使用该时区设置, <fmt:setBundle> 标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。它们的属性和描述如表 9.20 所示:
表 9.20 <fmt:timeZone> 、 <fmt:setTimeZone> 标签 属性和说明
属性
描述
value
时区的设置
var
<fmt:setTimeZone> 独有的属性,用于保存时区为一个变量
scope
变量的作用范围
9.5.8 用于格式化数字的 <fmt:formatNumber> 标签
<fmt: formatNumber > 标 签用于格式化数字。它的属性和描述如表 9.21 所示:
表 9.21 <fmt:formatNumber> 标签属性和说明
属性
描述
value
格式化的数字,该数值可以是 String 类型或 java.lang.Number 类型的实例
type
格式化的类型
pattern
格式化模式
var
结果保存变量
scope
变量的作用范围
maxIntegerDigits
指定格式化结果的最大值
minIntegerDigits
指定格式化结果的最小值
maxFractionDigits
指定格式化结果的最大值,带小数
minFractionDigits
指定格式化结果的最小值,带小数
<fmt:formatNumber> 标签实际是对应 java.util.NumberFormat 类, type 属性的可能值包括 currency (货币)、 number (数字)和 percent (百分比)。
下面看一个示例。
<fmt:formatNumber value="1000.888" type="currency" var="money"/>
该结果将被保存在“ money ”变量中,将根据 Locale 环境显示当地的货币格式。
9.5.9 用于解析数字的 <fmt:parseNumber> 标签
<fmt:parseNumber> 标签用于解析一个数字,并将结果作为 java.lang.Number 类的实例返回。 <fmt:parseNumber> 标签看起来和 <fmt:formatNumber> 标签的作用正好相反。它的属性和描述如表 9.22 所示:
表 9.22 <fmt:parseNumber> 标签属性和说明
属性
描述
value
将被解析的字符串
type
解析格式化的类型
pattern
解析格式化模式
var
结果保存变量,类型为 java.lang.Number
scope
变量的作用范围
parseLocale
以本地化的形式来解析字符串,该属性的内容应为 String 或 java.util.Locale 类型的实例
下面看一个示例。
<fmt:parseNumber value="15%" type="percent" var="num"/>
解析之后的结果为“ 0.15 ”。
9.5.10 用于格式化日期的 <fmt:formatDate> 标签
<fmt:formatDate> 标签用于格式化日期。它的属性和描述如表 9.23 所示:
表 9.23 <fmt:formatDate> 标签属性和说明
属性
描述
value
格式化的日期,该属性的内容应该是 java.util.Date 类型的实例
type
格式化的类型
pattern
格式化模式
var
结果保存变量
scope
变量的作用范围
timeZone
指定格式化日期的时区
<fmt:formatDate> 标签与 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签的关系密切。若没有指定 timeZone属性, 也可以通过 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签设定的时区来格式化最后的结果。
9.5.11 用于解析日期的 <fmt:parseDate> 标签
<fmt:parseDate> 标签用于解析一个日期,并将结果作为 java.lang.Date 类型的实例返回。 <fmt:parseDate> 标签看起来和 <fmt:formatDate> 标签的作用正好相反。它的属性和描述如表 9.24 所示:
表 9.24 <fmt:parseDate> 标签属性和说明
属性
描述
value
将被解析的字符串
type
解析格式化的类型
pattern
解析格式化模式
var
结果保存变量,类型为 java.lang.Date
scope
变量的作用范围
parseLocale
以本地化的形式来解析字符串,该属性的内容为 String 或 java.util.Locale 类型的实例
timeZone
指定解析格式化日期的时区
<fmt:parseNumber> 和 <fmt:parseDate> 两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对 var 属性的字符串参数要求非常严格。就 JSP 页面的表示层前段来说,处理这种解析本不属于份内之事,因此 <fmt:parseNumber> 和 <fmt:parseDate> 两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在 Servlet 中。
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>My JSP 'fmt.jsp' starting page</title>
</head>
<body>
<c:set var="salary" value="3540.2301"/>
<c:set var="total" value="56225.2301"/>
<fmt:setLocale value="en_US"/>
currency:<fmt:formatNumber value="${salary}" type="currency" currencyCode="USD"/><br>
percent:<fmt:formatNumber value="${salary/total}" type="percent" maxFractionDigits="4"/><br>
<hr>
<jsp:useBean id="now" class="java.util.Date"></jsp:useBean>
<fmt:setLocale value="zh_CN"/>
full--><fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br>
long--><fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>
medium--><fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="medium"/><br>
default--><fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/><br>
short--><fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br>
</body>
</html>
今天是:<fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/><br>
现在是:<fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/>
结果:
今天是:公元 2007年10月19日 星期五
现在是:下午 20:04:11.484 CST
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<fmt:parseDate value="${param.date}" var="date" pattern="yyyy/MM/dd:HH:mm:ss>
<fmt:parseDate value="${param.isoDate}" var="isoDate" pattern="yyyyMMdd'T'HHmmss">
The input parameters must match the patterns, or the JSP will thrown an exception. This page does no error handling.
Input parameters:
Date: 2004/04/01:13:30:00 Java format: Thu Apr 01 13:30:00 CST 2004
isoDate: 20040531T235959 Java format: Mon May 31 23:59:59 CDT 2004
Dates
Tag Output
Attribute: value; required. Tag has no body.
<fmt:formatDate value="${date}" type="both"/>
2004-4-1 13:30:00
<fmt:formatDate value="${isoDate}" type="both"/>
2004-5-31 23:59:59
Attribute: type; optional. Indicates what to print: date, time, or both.
<fmt:formatDate value="${date}" type="date"/>
2004-4-1
<fmt:formatDate value="${isoDate}" type="time"/>
23:59:59
Attribute: dateStyle; optional. Varies the date format.
<fmt:formatDate value="${isoDate}" type="date" dateStyle="default"/>
2004-5-31
<fmt:formatDate value="${isoDate}" type="date" dateStyle="short"/>
04-5-31
<fmt:formatDate value="${isoDate}" type="date" dateStyle="medium"/>
2004-5-31
<fmt:formatDate value="${isoDate}" type="date" dateStyle="long"/>
2004年5月31日
<fmt:formatDate value="${isoDate}" type="date" dateStyle="full"/>
2004年5月31日 星期一
Attribute: timeStyle; optional. Varies the time format.
<fmt:formatDate value="${isoDate}" type="time" timeStyle="default"/>
23:59:59
<fmt:formatDate value="${isoDate}" type="time" timeStyle="short"/>
下午11:59
<fmt:formatDate value="${isoDate}" type="time" timeStyle="medium"/>
23:59:59
<fmt:formatDate value="${isoDate}" type="time" timeStyle="long"/>
下午11时59分59秒
<fmt:formatDate value="${isoDate}" type="time" timeStyle="full"/>
下午11时59分59秒 CDT
Attribute: pattern; optional. Inidcates date/time custom patterns.
<fmt:formatDate value="${date}" type="both" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/>
星期四, 四月 1, 2004 13:30:00 -0600
<fmt:formatDate value="${isoDate}" type="both" pattern="d MMM yy, h:m:s a zzzz/>
<fmt:formatDate value="${这里可以放日期和字符串}" pattern="yyyy年MM月dd日"/>
方法2:用Struts标签格式化输出
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
格式化时间如:2008-06-23 11:00:22
<bean:write name="msg" property="messageDate" format= "yyyy-MM-dd HH:mm:ss" />
格式化时间如:2008-06-23 11:00
<bean:write name="msg" property="messageDate" format= "yyyy-MM-dd HH:mm" />
格式化时间如:06-23
<bean:write name= "sdrecord " property= "sdTime " format= "MM-dd"/>
补充格式化数字:
数字,不足4位前面自动补0 如:04 输入0004
<bean:write name= "sdrecord " property= "sdTime " format= "0000 "/>
附Struts bean:write
首先要想使用struts的标签库,则必须在jsp中指定所使用的标签库地uri,即标签库的标准。引入方法如下:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
接下来就可使用该标签库中的标签了,前缀是bean。我们这篇文章主要介绍write标签,bean:write相 当于<%=request.getAttribute("something")%> 其中something是属性的名字。下面bean:write的详细介绍如下:
bean:write常用的属性有如下几个:
1。name,用来指定属性的名字
2。filter,用来指定是否屏蔽到属性值的HTML格式
3。property,用来指定name所代表的对象的属性名字
4。format,用来指定显示的时间,数字,日期等的格式
例子一:
某处设置了request.setAttribute("hello","hello world");
则在某个jsp页面中,用struts的write标签取出并显示的方式如下:
<bean:write name="hello"/>,则页面上显示出hello world。
例子二:
某处设置了request.setAttribute("bj","<font color='red>欢迎你</font>");
则在某个jsp页面中,用struts的write标签取出并按红色的方式显示的方式如下:
<bean:write name="bj" filter="false"/>,则页面上显示出红色的欢迎你。如果filter属性不设置为false,则默认为true,那么显示出的内容就为<font color='red>欢迎你</font>。
例子三:
某处设置了request.setAttribute("date",new Date());
则在某个jsp页面中,用struts的write标签取出并按指定方式显示日期的方法如下:
<bean:write name=“date”/>,此为默认的显示方法,显示出的时间为:Fri Mar 28 15:04:21 CST 2008
<bean:write name=“date” format="yyyy-MM-dd HH:mm:ss"/>,此为自己指定日期的显示格式,显示出的时间为2008-3-28 15:04:21
例子四:
某处设置了request.setAttribute("n",“1223333.333”);
则在某个jsp页面中,用struts的write标签取出并按指定方式显示数字的方法如下:
<bean:write name=“n”/>,此为默认的显示方法,显示出的数字位1223333.333
<bean:write name=“n” format="###,###.####"/>,此为自己指定数字的显示格式,显示出的时间为1,223,333.333
如果希望小数点后的不足四位时,缺位补0,则应
<bean:write name=“n” format="###,###.0000"/>,此为自己指定数字的显示格式,显示出的时间为1,223,333.3330
例子五:
假如有User类和Groupe类,User类有属性名字userName,年龄age,性别sex和所属的Groupe,Groupe类有属性组名groupeName,并均具有相应的get和set方法。
某处设置了request.setAttribute("user",new User("张三","20","男",new Groupe("三组")));
则在某个jsp页面中,用struts的write标签取出并按指定方式显示结构体的方法如下:
用户名:<input type="text" value="<bean:write name=“user” property="userName"/>">
年龄:<input type="text" value="<bean:write name=“user” property="age"/>">
性别:<input type="text" value="<bean:write name=“user” property="sex"/>">
组名:<input type="text" value="<bean:write name=“user” property="groupe.groupeName"/>">
JSTL 标签 fn 函数
函数
描述
fn:contains(string, substring)
如果参数string中包含参数substring,返回true
fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substring(忽略大小写),返回true
fn:endsWith(string, suffix)
如果参数 string 以参数suffix结尾,返回true
fn:escapeXml(string)
将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回
fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置
fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。
fn:length(item)
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。
fn:replace(string, before, after)
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果
fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素
fn:startsWith(string, prefix)
如果参数string以参数prefix开头,返回true
fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符
fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串
fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串
fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回
fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回
fn:trim(string)
去除参数string 首尾的空格,并将其返回
示例
${fn.substring(string,begin,end)}
来一个我自己测试用的代码
<%@ page contentType="text/html;charset=gbk"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<html>
<head>
<title>这个是 JSTL的 测试</title>
</head>
<body>
<c:set var="str" value="stringStRiNg"/>
<c:set var="t" value="tr"/>
<c:out value="${str} = ${fn:length(str)}"/>
<c:out value="${fn:toLowerCase(str)}"/>
<c:out value="${fn:toUpperCase(' ')}"/>
<c:out value="${fn:toUpperCase('AbCdEfg')}"/><br>
<c:out value="${fn:substring('asdfefg',0,3)}"/><br>
<c:out value="${fn:substringAfter('asdf','s')}"/><Br>
<c:out value="${fn:substringBefore(str,'g')}"/><Br>
<c:out value="${fn:trim(' sd dew e ')}"/><Br>
<c:out value=" d sd dew e "/><Br>
<c:out value="${fn:replace(str,'ing','IN')}"/><Br>
</body>
</html>
发表评论
-
birt db2 查不到结果集 报错
2011-09-07 15:22 4077在Eclipse 里预览时报这个错误。就是因为没有值,rs.n ... -
birt db2 查不到结果集 报错
2011-09-07 15:20 2835根据条件没有查询到结果,就是结果集是0的情况。错误信息:The ... -
Struts1和Struts2的区别和对比
2010-11-20 09:44 734Struts1和Struts2的区别和 ... -
Struts常见错误的全面汇总
2010-11-20 09:41 716核心提示:J2EE综合Struts常见错误的全面汇总 1、 ... -
struts标签使用
2010-09-04 12:34 681logic:iterate <logic:iter ... -
struts 常用的action使用
2010-09-04 12:29 905DispatchAction ================ ...
相关推荐
### JSTL详解--标签库介绍 #### 一、引言 JSTL(JavaServer Pages Standard Tag Library),即JavaServer Pages标准标签库,是一种专为简化和增强JSP(JavaServer Pages)页面开发而设计的技术。通过提供一组预定...
**JSTL详解--Core标签库介绍** JavaServer Pages(JSP)标准标记库(JSTL)是一个关键的工具,旨在减少JSP页面中的脚本元素,提高代码的可维护性和可读性。JSTL包含了一系列定制的标记库,用于实现常见的Web应用...
在JSTL 1.1版本中,提供了五个主要的标签库,分别是Core、XML processing、I18N formatting、Database access和Functions。每个库都有特定的URI和前缀,方便在JSP页面中引用。 Core标签库是JSTL的基础,包含了处理...
#### JSTL 核心标签库详解 **核心标签库**是最常用的标签库之一,它提供了多种标签来帮助开发者更高效地处理 JSP 页面中的逻辑。这些标签主要分为四类: 1. **多用途核心标签** - `<c:out>`:用于显示数据。 - `...
#### <c:out> 标签详解 <c:out> 是JSTL中最常用的核心标签之一,主要用于在JSP页面中输出数据。它可以替代传统的`<%=%>`或`out.println()`方式来展示数据。 ##### 语法 - **无Body时的语法**: ```xml ...
### JSTL (JavaServer Pages Standard Tag Library):详解与应用 #### 一、引言 JSTL,即JavaServer Pages Standard Tag Library(JavaServer页面标准标签库),是为简化JSP页面开发而设计的一组自定义标签库。自...
##### I18N capable formatting标签库 - **URI**:`http://java.sun.com/jstl/fmt` - **前缀**:`fmt` - **示例**:`<fmt:tagname>` ##### Database access (SQL)标签库 - **URI**:`http://java.sun.com/jstl/sql`...
### JSTL1.1 标签库详解 #### 一、JSTL1.1 简介 JavaServer Pages Standard Tag Library (JSTL) 是 Java Community Process 制定的一项标准,其最新版本为1.1。JSTL 的主要作用在于提供一套标准化的标签库供 Web ...
### JSP网页编程JSTL标签详解 #### JSTL概览 JSTL(JavaServer Pages Standard Tag Library,JavaServer Pages标准标签库)是一种专为简化JavaServer Pages(JSP)开发而设计的标准标签库。它提供了一系列预定义的...
3. **I18N capable formatting 标签**:支持国际化和格式化。 4. **Database access (SQL) 标签**:提供数据库操作接口。 #### EL (Expression Language) 介绍 EL 是 JSTL 中用于访问和设置 JavaBeans 属性的语言...
### JSTL (JSP Standard Tag Library) 详解 #### JSTL简介及原因 **JSTL**(JSP Standard Tag Library),即JSP标准标签库,是一种为简化JavaServer Pages (JSP) 页面开发而设计的标准标签库。它通过提供一系列...
**JSTL Core标签库详解:** - `<c:out>`:这是最常用的标签,用于安全地输出数据,防止XSS攻击。它接受一个`value`属性,该属性可以是EL表达式,用来显示指定的数据。 - `<c:set>`:用于设置变量,可以将值绑定到...
### JSTL标签库知识点详解 #### 一、JSTL简介 JSP Standard Tag Library (JSTL),即JSP标准标签库,是由Sun Microsystems(现已被Oracle收购)发布的一种用于简化JSP页面开发的技术组件。JSTL提供了一系列预定义的...
3. **I18N Capable Formatting**(国际化格式化标签) - URI前缀:`http://java.sun.com/jstl/fmt` - 示例:`<fmt:tagname>` - 功能:支持JSP页面的国际化,包括日期、时间、货币等格式化。 4. **Database ...
- **I18N格式标签库(I18N-capable formatting tag library)**:用于处理国际化和格式化,如`<fmt:formatDate>`用于日期格式化。 - **SQL标签库(SQL tag library)**:与数据库交互,如`<sql:query>`执行SQL查询。 - *...
标签库涵盖了四个主要领域:核心操作(Core)、XML处理(XML processing)、国际化格式化(I18N capable formatting)以及数据库访问(Database access)。其中,核心(Core)标签库是最常用的部分,提供了丰富的标签来处理JSP...
### JSTL (JavaServer Pages Standard Tag Library):核心概念与使用详解 #### 概述 JSTL,即JavaServer Pages Standard Tag Library,是JavaWeb开发中的一个关键组件,旨在简化JSP页面的编程复杂度,提升代码的...