ITPub博客

首页 > 应用开发 > IT综合 > struts 国际化(yunchat-学习笔记)

struts 国际化(yunchat-学习笔记)

原创 IT综合 作者:yunchat 时间:2005-08-25 16:07:40 0 删除 编辑

字符编码格式的转换。

Resources Bundle 的配置。

Struts使用绑定资源的方式

[@more@]

1. 1 .处理HTTP请求数据编码

a) 在处理请求前先设置HttpServletRequest对象的字符编码:

request.setCharacterEncoding(“gb2312”);

b) 2. 对用户输入的请求数据进行编码转换.

new String (data.getBytes(“ISO-8859-1”), “GB2312”);

2. 3. 处理数据库数据编码使用编码转换.

3. 4 . 处理XML配置文件编码.;

4. 5. 处理响应结果编码.

a) a.Servlet.

Response.setContentType(“text/html;charset=GB2312”);

b) b.JSP.

<%@ page contentType=”text/html;charset=GB2312” %>

c) c.html.

HTTP-EQUIV = “Content Type”CONTENT=”text/html;charset=GB2312”>

LOCALE

Locale usLocale = new Locale(“en”, “US”);

Locale enLocale = new Locale(“ch”, “CH”);

Locale jpLocale = Locale.JAPAN;

JAVA虚拟机在启动时会查询操作系统,为运行环境设置默认的Locale. Java程序可以调用java.util.Locale类的getLocale()来获得默认Locale getDefault();

HttpServletRequst对象包含下面两方法: public java.util.Locale getLocale();

public java.util.Enumeration getLocales();

这两方法都会访问Http请求中的Accept-Language头信息.

Struts 中访问Locale对象.. 由于WEB服务器并不和客户浏览器保持长期的连接,因此没个发送到Web容器的Http请求中都包含了Locale信息. Struts配置文件中的元素的Locale属性指定是否把Locale对象保存在session范围中,默认值为true. 在处理每一个用户请求时,RequestProcessor类都会调用它的processLocale()方法,

在该方法中会判断是否保存在session.

Struts Action基类中 可使用getLocale()方法 WEB应用的其他地方可以直接使用R equestUtils类的getUserLocale()方法.

Strut类中的Resources bundle, struts类没有直接使用JAVA语言提供的ResourceBundle.

org.apache.struts.util.MessageResources

org.apache.struts.util.PropertyMessageResources

这两个类具有ResourceBundle相似功能PropertyMessageResourcesMessageResources子类. 另外可以使用MessageResourcesFactory创建ResourcesFactory在该类中包含createResources方法中创建PropertyMessageResources对象 但在配置文件中一个元素下却只能配置一个资源元素可以考虑重些 该方法…. 及重写PropertyMessageResources的相关方法是它可以支持多文件的配置.

如下:

factory="org.apache.struts.util.ExMessageResourcesFactory" parameter="tilesResources,tilesResources_zh_CN,tilesResources_en" />

通常:

factory="org.apache.struts.util.ExMessageResourcesFactory" parameter="tilesResources " />

Struts处理请求的时候,会依次搜索资源文件. : local为中文时候.

它会依次搜索_ch_CN, _ch, default .

默认资源文件名为:application.properties,但实际配置时使用如: tilesResources 它也会默认依次搜索的。

Struts应用,子应用模块,Resource Bundle和资源文件之间的关系:

ü 一个Struts应用可以有多个子应用模块,必须有且只有一个默认子应用模块.

ü 一个子应用模块可以有多个Resource Bundle, 必须有且只有一个默认Resource Bundle.

ü 一个Resource Bundle可以有多个资源文件, 必须有且只有一个默认资源文件.

对资源文件的编码转换:

JDK中提供了 native2ascii命令:

native2ascii –encoding gb2312 fileA fileB

另外: 不必在每个JSP或Servlet中设置HTTP请求的字符编码

可以在Servlet过滤器中设置编码 SetCharacterEncodingFilter;

......

......

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/118026/viewspace-805130/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    32
  • 访问量
    955635