一、介绍

国际化Internationalization的首末字符I和N之间字符数是18,简称I18N

“国际化”是指一个应用程序在运行时,能够根据客户端请求所来自国家或地区语言的不同,而显示不同的语言界面。

比如:你的电脑是中文操作系统,这个应用程序的界面使用中文文字;客户端是英文操作系统,就显示英文界面。

国际化资源文件,后缀以properties作为扩展名,该文件以“键=值”(key=value)对的形式存储资源数据

二、命名格式:

1、资源文件名.properties

2、资源文件名_语言种类.properties

三、编码

  在国际化时,所有的字符都要使用标准的编码方式,需要把中文字符转换为Unicode代码。

  中文资源文件不能直接使用,必须转换为Unicode代码

  Eclipse中,在globalMessages_zh_CN.properties文件中,在等式右边输入中文,自动转换为Unicode编码方式,如图所示:

三、应用实例

  登陆时调用中文资源文件如下:

IE浏览器将英文[en-US]上移到顶部,如下:

重新打开浏览器登陆页面,此时调用英文资源文件,如下

Eclipse中实例目录结构,如下:

1、编写国际化资源文件,将这两个文件放在和struts.xml同一个目录

中文文件:globalMessages_zh_CN.properties

英文文件:globalMessages_en_US.properties

2、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app  version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <filter>  <!-- 配置Struts2核心Filter的名字 -->  <filter-name>struts2</filter-name>  <!-- 配置Struts2核心Filter的实现类 -->  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <!-- 配置Filter拦截的URL -->  <filter-mapping>  <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 -->  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  </web-app>  

3、编写视图组件

(1)login.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 使用text标签输出国际化消息 -->
<title><s:text name="loginTitle" /></title>
</head>
<body><s:form action="checkLogin" method="post"><!-- 表单元素的key值与资源文件的key对应 --><s:textfield name="name" key="loginName"></s:textfield><s:password name="password" key="loginPassword"></s:password><s:submit key="loginSubmit"></s:submit></s:form>
</body>
</html>

(2)loginSuccess.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 使用text标签输出国际化消息 -->
<title><s:text name="successPage" /></title>
</head>
<body><hr><s:text name="loginName" />:<s:property value="name" /><br><s:text name="loginPassword" />:<s:property value="password" /></body>
</html>

4、编写业务控制器

LoginAction1.java

package loginAction;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class LoginAction1 extends ActionSupport{private String name;private String password;//用于定义标题信息private String tip;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getTip() {return tip;}public void setTip(String tip) {this.tip = tip;}public String execute() throws Exception{if(getName().equals("QQ")&&getPassword().equals("123")){ActionContext.getContext().getSession().put("name", getName());return SUCCESS;}else{return ERROR;}}}

5、在struts.xml中配置Action和国际资源文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 使用Struts2中的I18N拦截器,并通过constant元素配置常量,指定国际资源文件名字,value的值就是“资源文件名”--><constant name="struts.custom.i18n.resources" value="globalMessages" /><constant name="struts.i18n.encoding" value="UTF-8" /><package name="I18N" extends="struts-default"><action name="checkLogin" class="loginAction.LoginAction1"><result name="success">/I18N/loginSuccess.jsp</result><result name="error">/I18N/login.jsp</result></action></package></struts>

转载于:https://www.cnblogs.com/Donnnnnn/p/5676002.html

Struts2国际化——完整实例代码相关推荐

  1. php批量删除例子,php批量删除数据完整实例代码

    php批量删除数据完整实例代码2017-11-11 21:03 网站后台,一般都有相关的数据,以列表的形式来展现,也方便管理. 有些数据,我们可能需要对其批量进行操作,比如删除.更新日期等. 今天小编 ...

  2. 发布房源(四)——房源列表处理-完整实例代码

    房源列表处理--完整实例代码 处理图片的路径 处理相关链接的跳转 首页->去出租菜单 我的->我的出租 相关的回退链接 实例-房源列表管理 import React, { Componen ...

  3. php中分页公式,php分页函数完整实例代码

    本文分享一例php分页函数完整实例代码,使用此函数实现分页效果很不错.分享给大家供大家参考. 具体功能代码如下: /* * Created on 2011-07-28 * 使用方法: require_ ...

  4. Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...

  5. (转载)Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)

    转载请注明出处:http://blog.csdn.net/anxpp/article/details/51512200,谢谢! 本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解 ...

  6. C#4.0 操作IE浏览器自动填表支付宝网站完整实例代码

    先前写了系列小工具开发笔记-IE自动填表器-第零篇:序后,发现很多网友问我同一个问题,就是如何使用C#(或者C++)操作IE浏览器(或者WinForm内嵌浏览器)里面的ActiveX控件.下面就以支付 ...

  7. Struts2的手工自定义验证--完整实例代码

    ActionSupport类实现了Validateable.ValidationAware接口, 其中Validateable接口就是验证器接口,该接口有一个validate()方法, validat ...

  8. Struts2快速入门实例代码教程

    Struts2是基于MVC设计模式的流行和成熟的Web应用程序框架.Struts2并不只是Struts 1下一个版本,但它是一个完全重写的Struts架构. WebWork框架开始了与Struts框架 ...

  9. jq分页 不刷新页面_jQuery无刷新分页完整实例代码

    本文实例讲述了jQuery无刷新分页实现方法.分享给大家供大家参考,具体如下: 这款jQuery分页示例,是分页经典形式,兼容性也做的好,网页上的分页代码,分享给大家. 运行效果截图如下: 在线演示地 ...

最新文章

  1. 几行代码实现老照片上色复原!
  2. 《当程序员的那些狗日日子》(五)工作中,工作外
  3. wxWidgets:wxBitmapToggleButton类用法
  4. Golang中WaitGroup、Context、goroutine定时器及超时学习笔记
  5. USB接口定义(Z)
  6. usaco-sprime-superprime-pass
  7. 复杂性思维中文第二版 七、物理建模
  8. win11窗口拖动卡顿怎么办 Windows11窗口拖动卡顿的解决方法
  9. vue根据屏幕大小适配表格高度
  10. dadayi大一c语言累加编程题,c++习题答案中国电力出版社
  11. python使用redis做缓存_Python的Flask框架使用Redis做数据缓存的配置方法
  12. SystemConfiguration 简介
  13. 简单说说jsonp原理
  14. sort和sorted的区别
  15. nacos 适配人大金仓数据
  16. sdf贴图方式之tri-planar贴法
  17. 坚持学下去!转行程序员的2020年度总结
  18. 【安全狐】NmapMasscan扫描工具使用详讲
  19. python登录网易163邮箱,爬取邮件
  20. GoWeb - GORM

热门文章

  1. [转]本地图片预览二三事
  2. Ags 9.3 文档逐步上线
  3. Nhibernate中Unexpected row count的一种解决办法
  4. python阈值计算_python – 在numpy中计算超过阈值的数组值的最快方法
  5. 程序员求助:腾讯面试题,64匹马8个跑道,多少轮选出最快的四匹
  6. 如何在win64位下搭载汇编环境?DOSbox教程之debug怎么使用?
  7. 快速排序-超级详细代码注释!
  8. mysql not in优化_98%的人不知道的MySQL优化器原理
  9. 常用的分隔符有哪三种_掌握这三种调漂方法,你想怎么钓就怎么钓,再也不用求人...
  10. python image.open函数_PIL.Image.open和cv2.imread的比较与相互转换的方法