`
javaoldboy
  • 浏览: 71292 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

struts的国际化以及标签

阅读更多

struts是一个MVC框架,像Java和其他Java框架一样,struts可以轻松实现国际化;于是根据网上的资料,做了一个尝试,因为第一次做多语言程序,还是拐了很多弯路;但所幸,经过不断的尝试,终于成功的实现多语言版本的简单页面;
因为程序非常简单,所以在整个尝试过程中,全部使用手工编码,没有使用任何辅助工具;

1、 建立服务器
我使用Tomcat4作为测试环境,建立过程(略);

2、 下载struts
可 以到http://jakarta.apache.org/struts/index.html下载,下载后解压,把其中的.war文件拷贝到 Tomcat的webapps目录下,启动Tomcat,如果http://localhost:8080/struts-example/ 运行没有问题,说明环境建立成功;这些.war文件在Tomcat启动后会自动展开成文件,里面有源代码,可以作为源码研究;

3、 建立工程
在webapps目录下建立一个international文件夹,再在international目录下建立WEB-INF文件夹和WEB-INF/classes文件夹,这些都是一个JSP工程必须的;

4、 加了struts的类
在WEB-INF目录下建立一个lib子目录,把struts-example\WEB-INF\lib目录下将所有.jar文件拷贝到该目录下;这些文件是struts的控制类库和标签类库等;
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-fileupload.jar
commons-lang.jar
commons-logging.jar
commons-validator.jar
jakarta-oro.jar
struts.jar

5、 加入struts标签定义文件
从struts-example\WEB-INF目录下,把.TLD文件拷贝到international的WEB-INF目录下,这些文件标签库的定义文件;
struts-bean.tld
struts-html.tld
struts-logic.tld
struts-nested.tld
struts-template.tld
struts-tiles.tld

6、 建立struts的config文件
建立struts的config文件的struts-config.xml,内容如下:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

<message-resources parameter="resources.application"/>

</struts-config>

message -resources标签是指message资源的文件,就是我们存放我们的多种语言的提示信息的文件,resources.application表是 classes目录下的resources目录用来存放资源文件,默认语言文件名为application.properties,中文为 application_zh_CN.properties,其他语言类似;

7、 建立web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
<display-name>test international</display-name>

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

</web-app>
上面的web.xml定义了struts的控制类、config文件和标签,因为比较简单,所以不做解释;

8、 建立资源文件
在classes目录下,建立一个resources目录,用来存放资源文件;
先建立默认的资源文件application.properties和英文(美国)的资源文件application_en_US.properties,内容为:

# -- international test --
test.title=international application test
test.body=This is a international application test

先建立这两个文件,中文的等下一步建立

9、建立jsp文件
在international目录下,建立index.jsp文件,内容为:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<html:html locale="true">
<head>
<title><bean:message key="test.title"/></title>
<html:base/>
</head>
<body bgcolor="white">

<p><bean:message key="test.body"/></p>

</body>
</html:html>

在这里<html:html locale="true">表示使用浏览器默认的地区和语言;<bean:message key="test.title"/>的意思是取对应资源文件里的test.title项目的内容;
启 动Tomcat,在浏览器里输入http://localhost:8080/international/,查看效果,如果浏览器标题显示 international application test,页面里显示This is a international application test则说明你的程序成功了;下面只要增加资源文件,你就可以在多种语言的系统里看了;

10、 建立简体中文的资源文件
在resources目录下建立一个application_cn.properties,输入内容:

# -- international test --
test.title=国际化程序测试
test.body=这是一个国际化程序测试例子

因为java的国际化是通过unicode码来实现,所以要把代码转为unicode码;在Dos下,转到resources目录,执行:
native2ascii application_cn.properties application_zh_CN.properties
转换后的application_zh_CN.properties文件内容为:

# -- international test --
test.title=\u56fd\u9645\u5316\u7a0b\u5e8f\u6d4b\u8bd5
test.body=\u8fd9\u662f\u4e00\u4e2a\u56fd\u9645\u5316\u7a0b\u5e8f\u6d4b\u8bd5\u4f8b\u5b50

这就是上面的中文的unicode码;
重新启动Tomcat, 在浏览器里输入http://localhost:8080/international/,你看,标题和内容是不是变成中文了;

11、 建立繁体中文的资源文件
在resources目录下建立一个application_tw.properties,输入内容:

# -- international test --
test.title=???H化程式?y??
test.body=?@是一?????H化程式?y??例子

因为java的国际化是通过unicode码来实现,所以要把代码转为unicode码;在Dos下,转到resources目录,执行:
native2ascii application_tw.properties application_zh_TW.properties
转换后的application_zh_TW.properties文件内容为:

# -- international test --
test.title=\u570b\u969b\u5316\u7a0b\u5f0f\u6e2c\u8a66
test.body=\u9019\u662f\u4e00\u500b\u570b\u969b\u5316\u7a0b\u5f0f\u6e2c\u8a66\u4f8b\u5b50

这就是上面的繁体中文的unicode码;

12、 测试多语言
打 开IE的“工具”->“Internet选项”菜单,“常规”选项卡,点击其中的“语言”按钮,添加“英语(美国)-[en-us]”语言,将其他 的语言删除,重新启动IE后,输入http://localhost:8080/international/index.jsp,你会发现内容已经变成 英文;
用同样的方法,可以测试简体中文和繁体中文;


上面是转的matrix上的一篇文章,个人觉得有几点要注意
1、<html:html locale="true"> ,不过不加也可以
2、资源文件 application_zh_CN.properties 这里的cn和us一定要大写,否则这个文件就起不了作用了
3、修改完了要重启IE,否则会让你很郁闷

今天还研究了struts标签,主要是看了下bean和logic,用这两个标签要比写java代码方便一些,不过要是和JSTL还有EL语言比起来,还是要麻烦很多。可是jsp 1.2不支持,那也只好这样啦
logic做循环,不论List里边是JavaBean或者HashMap,都可以直接取到想要的属性。
<logic:iterate id="stu" name="stuList" >
            <tr>
                <td>
                <logic:match name="stu" value="20">
                <bean:write name="stu" property="name"></bean:write>
                </logic:match>
                </td>
                <td><bean:write name="stu" property="age"></bean:write></td>
            </tr>
            </logic:iterate>
<bean:size />可以拿来做判断,直接取到size的值
<bean:size id="size" name="stuList"/><%=size %>

分享到:
评论

相关推荐

    struts2标签库及国际化的使用例子

    Struts2 框架提供了强大的标签库和国际化功能,本实验旨在掌握 Struts 2 标签库和国际化功能的使用,并实现用户注册页面的国际化显示。 一、Struts2 标签库 Struts2 框架提供了一个强大的标签库,用于简化 JSP ...

    struts中文问题,struts国际化问题——终极解决方案

    ### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...

    struts2国际化 标签 页面 处理类

    3. 国际化标签: - Struts2还提供了`s:i18n`标签,可以指定basename来查找特定的资源文件,如 `&lt;s:i18n name="messagefile"&gt;...&lt;/s:i18n&gt;`。这将从`messagefile_XX_XX.properties`文件中查找键。 在Action类中处理...

    struts国际化(项目)

    在`strutsI18N`这个压缩包中,可能包含了实现Struts国际化的一个示例项目,包括了上述提到的资源文件、配置文件以及相关的Action类和JSP页面。通过分析这个项目,开发者可以更深入地理解Struts的国际化机制,并将其...

    struts1.2 国际化

    本文将详细介绍 Struts 1.2 如何实现国际化,以及如何利用该框架创建国际化应用。 #### 二、本地化与国际化基础 ##### 1. 本地化 (Localization) 本地化是指将软件产品调整以适应某个特定市场(国家/地区或语言)...

    struts2国际化+简单的标签+用户注册和登录

    总的来说,这个项目提供了一个基础的Struts2应用实例,展示了如何实现国际化、使用Struts2标签库,以及创建简单的用户注册和登录功能,尽管它并不涉及实际的数据存储。对于学习和理解Struts2框架的运作机制,这是一...

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    Struts国际化源代码

    在这个"Struts2国际化源代码"资源中,我们可以深入理解如何在Struts2应用中实现国际化功能。 首先,国际化的核心在于资源文件,通常命名为`Messages.properties`,其中包含了应用程序中的所有可本地化的字符串。...

    struts1标签和简单程序(实现了国际化)

    - JSP中使用`&lt;fmt:message&gt;`标签显示国际化的消息。 4. **简单程序实现**: - 创建Action类,实现业务逻辑,可能需要继承自`org.apache.struts.action.Action`。 - 编写ActionForm,对应用户输入的数据,并进行...

    i18国际化struts标签

    "i18n"是由'i'和'n'以及两者之间的18个字母组成的缩写,代表了“国际化”这一过程。它涉及将软件设计成可以适应不同语言和地区的需求,而无需进行大幅度的代码修改。对于Web应用,这意味着创建资源文件,存储各种...

    Struts标签库 Struts 标签库

    - **国际化标签**:如`s:text`,用于显示多语言文本。 - **错误处理标签**:如`s:fielderror`,用于显示字段级别的错误信息。 3. **使用示例** - `s:textfield`标签:`用户名" /&gt;`,这会生成一个输入框,其name...

    struts2国际化例子源码

    总结,这个Struts2国际化例子源码展示了如何在Java web应用中实现多语言支持,通过配置Struts2框架、编写Action类、创建资源文件以及在JSP页面中使用标签,实现了对不同语言环境的适应。这个例子对于理解和实践...

    STRUTS2国际化的问题

    1. **页面元素的国际化**:可以使用EL表达式或Struts2提供的标签来显示国际化文本,例如:`${message['welcome']}`。 2. **表单验证的国际化**:Struts2支持在表单验证时显示国际化错误消息。这可以通过在资源文件...

    struts1.x 最简洁国际化 源代码

    在国际化(i18n)方面,Struts1提供了强大的支持,使得应用程序可以适应不同语言和地区的用户需求。以下是关于Struts1.x国际化的一些核心知识点: 1. **资源包(Resource Bundle)**: - 在Java中,资源包是包含...

    struts2 国际化使用

    深入理解Struts2的源码,你可以看到它是如何加载和解析`ResourceBundle`的,以及如何与`ValueStack`和`TextProvider`协同工作,提供国际化服务。这有助于优化和定制国际化策略。 总的来说,Struts2的国际化是一个...

    struts1标签库详解

    * bean:message:取回国际化消息,例如错误信息、提示信息等。 * bean:page:将一个 bean 绑定到 page 作用域中,以便其它标签可以使用该值。 * bean:parameter:取回请求参数的值,例如 GET 或 POST 请求的参数。 *...

    struts2国际化测试

    在视图层,我们可以通过Struts2的标签库来显示国际化的文本。例如,使用`&lt;s:text&gt;`标签: ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; &lt;!-- 显示从资源文件中获取的文本 --&gt; ``` 此外,为了提供语言...

    Struts1 和 Struts 2 国际化全局资源

    Struts1 和 Struts 2 是两种非常流行的Java Web开发框架,它们都提供了对国际化(i18n)的支持,使得应用能够根据用户的语言和地区显示相应的本地化内容。国际化是软件设计的一个重要方面,它允许应用程序在全球范围...

    struts1国际化小实例

    在Struts1中实现国际化(i18n)是提高应用程序可扩展性和适应不同语言环境的重要手段。下面将详细解释如何在Struts1中进行国际化实践,并结合给出的实例进行解析。 一、国际化(i18n)基础 国际化是指软件设计时...

Global site tag (gtag.js) - Google Analytics