一、struts2国际化原理

根据不同的Locale读取不同的文本。

例如有两个资源文件:

第一个:message_zh_CN.properties

第二个:message_en_US.properties

当Locale=zh_CN时,就去第一个文件查找;当Locale=en_US时,就去第二个文件查找。

二、简单方式实现国际化

1. 新建一个maven的web项目,项目结构如下:

2. 在src/main/java目录下新建两个国际化资源文件message_zh_CN.properties、message_en_US.properties,然后将各个key-value对添加到这两个文件中,key字段一定要统一

message_zh_CN.properties:

info=\u4FE1\u606F
info_not_empty=\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A
submit=\u63D0\u4EA4

message_en_US.properties:

info=information
info_not_empty=info not empty
submit=submit

3. 配置struts.properties文件,这个文件也是放在src/main/java目录下的

struts.cunstom.i18n.resources=message
struts.i18n.encoding=utf-8

struts.cunstom.i18n.resources=message是为了告诉程序,国际化资源文件是message开头命名的资源文件。这个需要在struts的xml文件里面配置

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--告诉程序,国际化资源文件是message开头命名的资源文件。 -->
<constant name="struts.custom.i18n.resources" value="message" /> <package name="default" namespace="/" extends="struts-default"> </package> </struts>

4. Struts2的页面国际化,默认要走action才行,如果直接访问jsp文件,是没有国际化效果的,所以定义一个语言的LangAction,然后在struts.xml文件里面配置

LangAction:

 package com.study.struts2.demo;

 import com.opensymphony.xwork2.ActionSupport;

 public class LangAction extends ActionSupport {

     /**
*
*/
private static final long serialVersionUID = -5273948217476741834L; @Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
} }

struts.xml:

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--告诉程序,国际化资源文件是message开头命名的资源文件。 -->
<constant name="struts.custom.i18n.resources" value="message" /> <package name="default" namespace="/" extends="struts-default"> <action name="lang" class="com.study.struts2.demo.LangAction">
<result name="success">index.jsp</result>
</action> </package> </struts>

5. 实现在index.jsp页面中的中英文切换

 <%@ page language="java" pageEncoding="UTF-8"%>
<!--引入struts2的标签 -->
<%@ taglib prefix="s" uri="/struts-tags"%>
<body>
<!--中英文切换按钮 -->
<a href="lang.action?request_locale=zh_CN">中文</a>
<a href="lang.action?request_locale=en_US">English</a> <p>
<a href="<s:url action='hello'/>">Hello World</a>
</p> <!--struts2的取值标签 value="<s:property value="msg" />"输入正确的被保留 -->
<form action="hello.action">
<!-- 信息: -->
<s:text name="info"></s:text>
<input type="text" name="msg" value="<s:property value="msg" />" />
<s:property value="fieldErrors['msg'][0]" />
<br> <input type="submit" value="<s:text name="submit"></s:text>">
</form> <!--验证通过后显示 -->
<h2>
<s:property value="msg" />
</h2>
</body>
</html>

5. 在tomcat里面启动项目输入地址验证http://localhost:8080/TestStruts2

中文页面:

英文页面:

三、过滤器方式实现国际化

后续补充。。。。。

四、把Locale放到session里面,从session里面取出Locale作国际化

后续补充。。。。。

struts2系列(四):struts2国际化的多种方式的更多相关文章

  1. (Struts2学习系列四)Struts2指定配置文件

    我们的每个action都在struts.xml里配置的话,就会出现很多的xml语句,单单一个struts.xml就会变得很大,所以我们会在struts.xml里使用include引入其他的.xml文件 ...

  2. Redis系列四 - 分布式锁的实现方式

    前言 分布式锁一般有3中实现方式: 数据库乐观锁: 基于Redis的分布式锁: 基于ZooKeeper的分布式锁. 以下将详细介绍如何正确地实现Redis分布式锁. 可靠性 首先,为了确保分布式锁的可 ...

  3. HTML系列:js和css多种方式实现隔行变色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. struts2官方 中文教程 系列四:Action

    先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列四:Action  即 http://www.cnblogs.com/linghaoxinpian/p/6905521.html 下载 ...

  5. Struts2第四天

    Struts2第四天 昨天: 自定义的拦截器:继续methodFilterInterceptor,可以指定哪些方法需要拦截或者不拦截. Intercepters(配置拦截器),intercepter( ...

  6. 【SSH框架】之Struts2系列(二)

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联 1.Struts2常量配置 (1).Struts2默认常量配置文件路径,如下图: (2).Strut ...

  7. 【SSH框架】之Struts2系列(一)

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系 1.Struts2框架概述 (1).什么是Struts2 Struts2是一种基于MVC模式的轻量 ...

  8. Struts2 中的数据传输的几种方式

    1.     如何将参数从界面传递到Action? 你可以把Struts2中的Action看做是Struts1的Action+ActionForm,即只需在Action中定义相关的属性(要有gette ...

  9. 【中间件】Struts2系列漏洞POC小结

    #Struts2-045 ''' CVE-2017-5638 影响范围:Struts 2.3.5 – Struts 2.3.31,Struts 2.5 – Struts 2.5.10 触发条件:基于J ...

随机推荐

  1. CentOS文件权限管理

    目录 文件属性 chown更改所有者 chgrp更改所属组 文件权限rwx chmod修改权限 默认权限umask 权限判定的顺序 特殊权限SUID,SGID,sticky 隐藏权限chattr,ls ...

  2. mongodb 在windows下面进行副本建创建

    一:主从复制 1: 首先看看模型图 2: 从上面的图形中我们可以分析出这种架构有如下的好处: <1>  数据备份. <2>  数据恢复. <3>  读写分离. 3: ...

  3. 异常 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]

    使用Spring 的JDBCtemplate 调用数据库的时候 出现了如下的问题 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-S ...

  4. 关于ios::sync_with_stdio(false)

    作用就是取消同步,这样的话使用cin就和使用scanf效率相似. 但是今天在做题的时候碰到一点小问题,就是在关闭同步的时候使用scanf是交了一发代码,然后RE了(经检查scanf没有写错),而把关同 ...

  5. 乐橙谷浅析JAVA程序员就业前景

    不知道大家对Java就业前景了解多少.随着信息化的发展,IT培训受倒了越来越多人的追捧.在开发领域,JAVA培训成为了许多人的首选!JAVA应用广泛,JAVA培训就业前景良好!目前,虽然JAVA人才的 ...

  6. js两个叹号的使用

    1.浏览器判断空和未定义以及零时返回的值如下: alert(undefined)  //undefined alert(null)  //null alert(0)  //0 2.有时为了便于下一步判 ...

  7. E - 今年暑假不AC HDU - 2037

    "今年暑假不AC?"  "是的."  "那你干什么呢?"  "看世界杯呀,笨蛋!"  "@#$%^&* ...

  8. 解决外部编辑器修改Eclipse文件延迟刷新【补充】

    在之前的文章,使用gulp解决外部编辑器修改Eclipse文件延迟刷新,原理是用gulp把更改过的项目文件直接复制一份到Tomcat的webapp.root下, 现在补充另外一种方法,双击Server ...

  9. 均值滤波去除图像噪声的matlab程序

    所谓均值滤波实际上就是用均值替代原图像中的各个像素值. 均值滤波的方法是:对待处理的当前像素,选择一个模板,该模板为其近邻的若干像素组成,用模板中的像素的均值来替代原像素. 优点:算法简单,计算速度快 ...

  10. activemq的安装与使用

    一.activemq的安装 环境:CentOS 6.JDK8 1. 确保系统已安装了可用的jdk版本2. 从网上下载 Linux 版的 ActiveMQ( apache-activemq-5.11.1 ...