JSP定制标记——分析java.util.Locale,根据地区选择显示日期的标记
2005-03-16 16:46
615 查看
package org.eleaf.java.guestbook.tags;
import java.util.*;
import java.text.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class NowDateTag extends TagSupport{
private String prefix = "", language = "", country = "";
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setCountry(String country) {
this.country = country;
}
public void setLanguage(String language) {
this.language = language;
}
private String filterLanguage(String language) { //分析请求头Accept-Language
if (language.length() >=2) {
language = language.substring(0,2);
}
return language;
}
public int doStartTag() throws JspException {
try {
Date date = new Date();
Locale locale = new Locale(filterLanguage(language), country);
String nowDate = prefix + " " + getNowDate(date, locale) + " " + getDayOfWeek(date, locale);
pageContext.getOut().println(nowDate);
} catch (Exception e) {
throw new JspException(e);
}
return SKIP_BODY;
}
private String getNowDate(Date date, Locale locale) {
String nowDate = "";
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, locale);
nowDate += df.format(date);
return nowDate;
}
private String getDayOfWeek(Date date, Locale locale) {
Calendar cal = Calendar.getInstance(locale);
cal.setTime(date);
int index = cal.get(Calendar.DAY_OF_WEEK);
DateFormatSymbols symbols = new DateFormatSymbols(locale);
String[] days = symbols.getWeekdays();
return days[index];
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC '-//Sun Microsystems, Inc.//DTD JSP Tag Library
1.2//EN' 'http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd'>
<taglib>
<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Html Tags</short-name>
<tag>
<name>nowDate</name>
<tag-class>org.eleaf.java.guestbook.tags.NowDateTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>prefix</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>language</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>country</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ taglib prefix="htm" uri="/WEB-INF/tlds/html-tag.tld" %>
<htm:nowDate prefix="今天是" language="zh" country="cn" />
<br>
<htm:nowDate prefix="美国版本:" language="en" country="" />
<br>
<htm:nowDate prefix="英国版本:" language="en" country="uk" />
<br>
<htm:nowDate prefix="日本版本:" language="ja" country="jp" />
<br>
<htm:nowDate prefix="台湾地区版本:" language="zh" country="tw" />
<br>
<htm:nowDate prefix="法国版本:" language="fr" country="cn" />
<br>
<htm:nowDate prefix="根据浏览器确定:" language="<%=request.getHeader("Accept-language")%>" country="" />
<br>
<%
Locale loc = new Locale("fr", "cn");
out.println(loc.getDisplayLanguage() + ":" + loc.getDisplayCountry() + "<br>");
loc = new Locale("fr", "fr");
out.println(loc.getDisplayLanguage() + ":" + loc.getDisplayCountry() + "<br>");
loc = new Locale("fr", "错误国家代码");
out.println(loc.getDisplayLanguage() + ":" + loc.getDisplayCountry() + "<br>");
%>
结果:
今天是 2005年2月17日 星期四
美国版本: February 17, 2005 Thursday
英国版本: February 17, 2005 Thursday
日本版本: 2005/02/17 木曜日
台湾地区版本: 2005年2月17日 星期四
法国版本: 17 février 2005 jeudi
根据浏览器确定: 2005年2月17日 星期四
法文:中国
法文:法国
法文:错误国家代码
import java.util.*;
import java.text.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class NowDateTag extends TagSupport{
private String prefix = "", language = "", country = "";
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setCountry(String country) {
this.country = country;
}
public void setLanguage(String language) {
this.language = language;
}
private String filterLanguage(String language) { //分析请求头Accept-Language
if (language.length() >=2) {
language = language.substring(0,2);
}
return language;
}
public int doStartTag() throws JspException {
try {
Date date = new Date();
Locale locale = new Locale(filterLanguage(language), country);
String nowDate = prefix + " " + getNowDate(date, locale) + " " + getDayOfWeek(date, locale);
pageContext.getOut().println(nowDate);
} catch (Exception e) {
throw new JspException(e);
}
return SKIP_BODY;
}
private String getNowDate(Date date, Locale locale) {
String nowDate = "";
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, locale);
nowDate += df.format(date);
return nowDate;
}
private String getDayOfWeek(Date date, Locale locale) {
Calendar cal = Calendar.getInstance(locale);
cal.setTime(date);
int index = cal.get(Calendar.DAY_OF_WEEK);
DateFormatSymbols symbols = new DateFormatSymbols(locale);
String[] days = symbols.getWeekdays();
return days[index];
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC '-//Sun Microsystems, Inc.//DTD JSP Tag Library
1.2//EN' 'http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd'>
<taglib>
<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Html Tags</short-name>
<tag>
<name>nowDate</name>
<tag-class>org.eleaf.java.guestbook.tags.NowDateTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>prefix</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>language</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>country</name>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ taglib prefix="htm" uri="/WEB-INF/tlds/html-tag.tld" %>
<htm:nowDate prefix="今天是" language="zh" country="cn" />
<br>
<htm:nowDate prefix="美国版本:" language="en" country="" />
<br>
<htm:nowDate prefix="英国版本:" language="en" country="uk" />
<br>
<htm:nowDate prefix="日本版本:" language="ja" country="jp" />
<br>
<htm:nowDate prefix="台湾地区版本:" language="zh" country="tw" />
<br>
<htm:nowDate prefix="法国版本:" language="fr" country="cn" />
<br>
<htm:nowDate prefix="根据浏览器确定:" language="<%=request.getHeader("Accept-language")%>" country="" />
<br>
<%
Locale loc = new Locale("fr", "cn");
out.println(loc.getDisplayLanguage() + ":" + loc.getDisplayCountry() + "<br>");
loc = new Locale("fr", "fr");
out.println(loc.getDisplayLanguage() + ":" + loc.getDisplayCountry() + "<br>");
loc = new Locale("fr", "错误国家代码");
out.println(loc.getDisplayLanguage() + ":" + loc.getDisplayCountry() + "<br>");
%>
结果:
今天是 2005年2月17日 星期四
美国版本: February 17, 2005 Thursday
英国版本: February 17, 2005 Thursday
日本版本: 2005/02/17 木曜日
台湾地区版本: 2005年2月17日 星期四
法国版本: 17 février 2005 jeudi
根据浏览器确定: 2005年2月17日 星期四
法文:中国
法文:法国
法文:错误国家代码
相关文章推荐
- 根据名称分组,选择最大日期和最小日期的数据,并显示在一行上
- Java 根据comboBox选择结果显示JTable
- 根据easyui-datebox日期选择自动显示星座
- 项目中在Android.mk文件中根据项目名称选择不同的AndroidManifest.xml文件 && 如何使用系统设定的日期显示格式
- JAVA如何根据jsp页面时间(开始到结束时间)和checkbox选择不同的多少出现不同的曲线
- Java定制系统日期显示
- Android定制日历,支持周月切换,日期标记,农历显示,节假日
- 在jsp中使用My97DatePicker日期插件 在页面上不显示日期选择框的原因
- Java中,jsp文件编译之后部署显示中文乱码
- 显示 the import java.util cannot…
- java中设置日期格式的方式一般用SimpleDateFormat("YY-MM-dd")就可以了,但为什么有的 SimpleDateFormat("YY-MM-dd",locale.getDefau
- java 日期显示
- 下拉框里根据选择项不同,显示的图片也不同
- Java使用java.util包中的Date类来显示本机的当前时间
- 日期时间DateUtil-java工具类
- jsp向页面显示图片,找不到文件时直接使用java画图
- java 日期选择框 应用例子
- 最多显示当前日期的日期选择对话框(日历)
- java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式
- 当jsp页面显示JAVA代码