原文出处:http://qify.iteye.com/blog/689912
声明:本人转载只为分享,如涉及商业版权纠纷,请及时与本人联系,必将立即删除,造成不便,还望见谅,谢谢。
在网上有很多有关Struts的中文解决方案,但是很多都说得很零碎,不够完整。
下面是我的一个完整解决方案。
要使网页能够真正实现多语言,有三个地方都需要修改:
1. 在页面部分,一定要把页面的编码设成UTF-8,就是在开头加上这一句:
<%@ page contentType="text/html; charset=UTF-8" %>
并且把所有的中文信息都放到resource文件中。
以前我在写网页的时候,没有指定页面的编码,总是在获取表单的内容后,要人工的用new String(s.getBytes("ISO-8859-1"))转换一下,这样是很繁琐的,而且很容易出错。网页中如果没有指定编码,那么默认的就是用ISO-8859-1编码的。
2.相应的资源文件需要用native2ascii转换一下。
对于简体中文的资源文件:
Java代码
native2ascii -encoding gbk ApplicationResources_zh.properties
convert\ApplicationResources_zh.properties
对于繁体中文的资源文件:
Java代码
native2ascii -encoding big5 ApplicationResources_zh_tw.properties
convert\ApplicationResources_zh_tw.properties
3.需要用一个filter设置一下request的编码,我的代码如下:
filter代码:
Java代码
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**//**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author George Hill
* @version 1.0
*/
public class CharsetFilter implements Filter {
private FilterConfig filterConfig;
/**//**
* Request设置的Charset encoding
*/
private String encoding;
/**//**
* 是否忽略设置Request的Charset encoding
*/
private boolean ignore;
//Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if ("true".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value)
|| "on".equalsIgnoreCase(value) || "1".equalsIgnoreCase(value)) {
ignore = true;
}
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (!ignore) {
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
//Clean up resources
public void destroy() {
this.filterConfig = null;
}
}
web.xml的相关片断如下。注意:将以下代码放入web.xml文件中的</servlet-mapping>后面即可!
Java代码
<filter>
<filter-name>charsetfilter</filter-name>
<filter-class>xxx.CharsetFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样,在Action中处理表达的内容时,就不需要再做转换;而且在Action中处理数据给页面显示时,也不需要做转换。在页面中可以同时显示简体和繁体的内容,不需要去设置IE的编码。
另外需要说明的就是如果数据库也支持编码的话,最好也是设成UTF-8编码,这样才能够完整的解决多语言的问题。例如MySQL 4.1以上的版本可以设置编码成utf8,在JDBC的URL中可以指定编码为UTF-8。
分享到:
相关推荐
在"Struts 之旅 - 多国语言"这个主题中,我们将深入探讨Struts框架如何支持多语言国际化(i18n)功能,这对于构建全球化应用程序至关重要。 1. **国际化(i18n)基础**: 国际化是指设计和实现软件,使其能够适应...
绝对是官网最新版本2012年5月9日下载的,方便大家使用,很不错的资源,期待大家分享,只因我们都是ssh人~(所有相关jar包在:struts-2.3.3-all.zip\struts-2.3.3\lib)docs中都有相应的例子,会告诉你怎么用!...
`struts2-json-plugin-2.1.8.1.jar` 则是Struts 2框架的一个插件,主要用于增强Struts 2对JSON的支持。Struts 2是一款非常流行的MVC(Model-View-Controller)框架,用于构建企业级的Java Web应用程序。这个插件允许...
6. 支持国际化:可以返回不同语言的JSON数据,满足多语言应用的需求。 在实际开发中,为了使用这个插件,你需要将`struts2-json-plugin-2.3.8.jar`文件放入项目的类路径(classpath)下,然后在Struts2的配置文件...
Struts2是一个非常著名的开源Java框架,主要用于构建企业级Web应用程序。它的核心是Model-View-Controller(MVC)设计模式,旨在简化开发过程并提供更好的可维护性。Struts2.3.32是该框架的一个特定版本,它包含了对...
5. **国际化与本地化**:Struts支持多语言环境,通过资源文件可以轻松实现应用的国际化。 6. **异常处理**:Struts提供了一套完整的异常处理机制,可以通过配置文件定义全局或特定Action的异常处理策略。 7. **...
在国际化(i18n)和本地化(l10n)方面,Struts1提供了很好的支持,使得应用程序能够适应不同地区的用户需求。下面将详细介绍如何在Struts1中实现多国语言功能。 1. **理解基本概念** - **国际化(i18n)**:是...
struts2-jfreechart-plugin-2.1.8.1.jar
6. **国际化与主题支持**:Spring 提供了强大的国际化和主题支持,整合后,Struts 2 的Action 可以利用这些功能,为用户提供多语言和自定义界面风格的能力。 7. **测试支持**:由于Action 由Spring 管理,我们可以...
这个"struts-2.3.16.3-all"压缩包包含Struts框架的完整版本,旨在为开发者提供一个一站式的解决方案,包含了所有必要的组件、库和文档,以简化开发流程。 Struts 2是一个基于Model-View-Controller (MVC)设计模式的...
struts2-ssl-plugin-1.2.1.jar
本文将深入探讨解决Struts中文问题及国际化问题的终极方案,确保不同地区和语言环境下的用户都能正确、流畅地使用Web应用。 #### 核心策略:UTF-8编码与资源文件管理 - **统一采用UTF-8编码**:所有HTML和JSP页面...
本资料包聚焦于Struts2中的数据校验以及国际化(i18n)支持。 首先,我们来探讨"Struts2中的validation_多国语言版",这是Struts2的数据校验功能。Struts2提供了一种灵活的机制来验证用户输入,通过在Action类中...
struts2-spring-plugin-2.2.1.jarstruts2-spring-plugin-2.2.1.jarstruts2-spring-plugin-2.2.1.jar
9. **国际化(Internationalization)**:Struts 2支持多语言环境,开发者可以通过资源文件定义不同语言的文本,框架会自动根据用户的浏览器设置选择合适的语言。 10. **测试支持**:由于Struts 2 Action是POJO,因此...
Struts2 最新漏洞 S2-016、S2-017 修补方案 Struts2 是一个基于 Java 的 Web 应用程序框架,由 Apache 软件基金会维护。最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者...
struts2-dojo 跨域时解决拒绝访问的问题
struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar
5. **国际化(i18n)与本地化(l10n)**:Struts2支持多语言环境,开发者可以通过简单的配置实现应用的国际化和本地化。 6. **插件体系**:Struts2有一个强大的插件系统,可以轻松地扩展框架功能,如Spring集成、...
7. **国际化与本地化**:Struts 2支持多语言,可以轻松实现应用的国际化和本地化,通过资源包(properties文件)管理不同语言的文本。 8. **结果类型(Result Types)**:Struts 2预定义了多种结果类型,如...