字符编码格式的转换。
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中.
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相似功能PropertyMessageResources是MessageResources子类. 另外可以使用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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/118026/viewspace-805130/