spring mvc 国际化

使用CookieLocaleResolver实现国际化的步骤:
1.注册 messageSource,localeResolver 两个bean
2.调用localeResolver.setLocale()可改变 Locale
3.RequestContext.getMessage()ApplicationContext.getMessage()可以获取国际化信息
4.jsp页面引入spring标签后,也可直接获取国际化信息

spring 配置文件:

     <!-- 配置国际化资源文件路径 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="MessageBundle" /><!-- MessageBundle_en_US.properties,MessageBundle_zh_CN.properties -->
<property name="defaultEncoding" value="UTF-8" />
</bean>
<!-- 注册spring mvc的cookie locale,其他还有SessionLocaleResolver等 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="language" />
<property name="cookieMaxAge" value="604800" /><!-- cookieMaxAge属性表示这个Cookie应该持续多少秒,-1表示这个Cookie在浏览器关闭之后就失效 -->
<property name="defaultLocale" value="zh_CN" />
</bean>

Controller中配置:

 @Controller
public class LoginController {
@Autowired
private LocaleResolver localeResolver;
@Autowired
private ApplicationContext appCtx; @RequestMapping(value = "changeLocale")
public String changeLocale(String locale,HttpServletRequest request,HttpServletResponse response) { //locale 格式为 language_country,例如 en_US,zh_CN
Locale setLocale = new Locale(locale.split("_")[0] , locale.split("_")[1]);
localeResolver.setLocale(request, response, setLocale); //设置变量 locale 为当前 Locale
request.setAttribute("locale", localeResolver.resolveLocale(request)); //按当前 Locale 获取国际化信息
RequestContext requestContext = new RequestContext(request);
System.out.println(requestContext.getMessage("username")); //按指定 Locale 获取国际化信息
System.out.println(appCtx.getMessage("username", null, Locale.CHINA));
System.out.println(appCtx.getMessage("username", new Object[]{}, Locale.US)); return "locale";
//return "redirect:/";//跳转回原页面
}
}

locale.jsp代码:

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %><!-- 引入spring标签 -->
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<s:message code='username'/>
<s:message code="hello" arguments="${locale.language},${locale.country}" argumentSeparator=","/>
<!-- arguments是用来给资源文件添加参数的,argumentSeparator是用来分割多个参数的标记 -->
${locale}:${locale.language}_${locale.country}
</body>
</html>

MessageBundle_en_US.properties:

 username=guodefu
hello=hi,locale.language is {0},country is {1}

MessageBundle_zh_CN.properties:

 username=郭德福
hello=嗨,当前locale的语言是{0},国家是{1}

查看结果:
http://localhost:8080/guoguo-maven-web/changeLocale?locale=en_US
http://localhost:8080/guoguo-maven-web/changeLocale?locale=zh_CN

spring mvc 国际化的更多相关文章

  1. Spring MVC国际化配置

    Spring MVC国际化配置 前言 项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,那么问题来了Spring MVC如何配置并实现国际化. 实现过程(Maven项目) 对于Spri ...

  2. Spring MVC(十六)--Spring MVC国际化实例

    上一篇文章总结了一下Spring MVC中实现国际化所需的配置,本文继上一文举一个完整的例子,我选择用XML的方式.我的场景是这样的: 访问一个页面时,这个页面有个表格,对表头中的列名实现国际化. 第 ...

  3. spring mvc 国际化的几种方案

    spring mvc 国际化的几种方案 首先配置我们项目的service-servlet.xml文件添加的内容如下: <bean id="messageSource" cla ...

  4. Spring MVC国际化

    本文基于Spring MVC 注解-让Spring跑起来.本文提到的国际化是Spring实现国际化的方案之一. (1) 在applicationContext.xml中添加以下配置信息: <!- ...

  5. SpringBoot + Spring MVC国际化使用示例

    项目中需要显示中英文两种语言,所以需要对显示的内容进行国际化,如下是一个示例程序. 程序文件结构,如下图,后面详细列出各文件的代码. 1. 编写maven的pom.xml文件,如下: <proj ...

  6. Spring MVC基础知识整理➣国际化和异常处理

    概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...

  7. Java Web 学习(7) —— Spring MVC 之国际化

    Spring MVC 之国际化 i18n 与 l10n internationalization:国际化,以 i 开头,以 n 结尾,中间 18 个字母,简称 i18n. localization:本 ...

  8. Spring MVC(3)Spring MVC 高级应用

    一.Spring MVC 的数据转换和格式化 前面的应用,都只是用HandlerAdapter去执行处理器. 处理器和控制器不是一个概念,处理器是在控制器功能的基础上加上了一层包装,有了这层包装,在H ...

  9. 使用Spring MVC 实现 国际化

    使用Spring MVC 实现 国际化     博客分类: Spring   1. 版本 Spring 3.1   2. 配置 LocaleResolver     LocaleResolver 是指 ...

随机推荐

  1. navicat for mysql 注册码

    PremiumSoft Navicat for MySQL Enterprise Edition v8.0.27 姓名(Name):3ddown.com 组织(Organization):3ddown ...

  2. Codeforces Round #353 (Div. 2) C Money Transfers

    题目链接: http://www.codeforces.com/contest/675/problem/C 题意: 给一个数组,每个数与他相邻的数相连,第一个与最后一个相连,每个数的数值可以左右移动, ...

  3. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) C - Bear and Colors

    题目链接: http://codeforces.com/contest/673/problem/C 题解: 枚举所有的区间,维护一下每种颜色出现的次数,记录一下出现最多且最小的就可以了. 暴力n*n. ...

  4. 【CentOS】安装配置vncserver

    参考资料: http://my.oschina.net/yankunren/blog/70042 安装过程 (1).检查vncserver是否已经安装 [root@Nginx canyouNgx]# ...

  5. Matlab稀疏矩阵

    一.矩阵存储方式 MATLAB的矩阵有两种存储方式,完全存储方式和稀疏存储方式 1.完全存储方式 将矩阵的全部元素按列存储,矩阵中的全部零元素也存储到矩阵中. 2.稀疏存储方式 仅存储矩阵所有的非零元 ...

  6. Matlab求范数

    对 p = 2,这称为弗罗贝尼乌斯范数(Frobenius norm)或希尔伯特-施密特范数( Hilbert–Schmidt norm),不过后面这个术语通常只用于希尔伯特空间.这个范数可用不同的方 ...

  7. Mac下配置Maven

    1.Java环境变量设置就不说. 但是配置Maven需要检查下Java环境变量的设置.需要检查JAVA_HOME环境变量以及Java命令 wanyakundeMacBook-Pro:Library w ...

  8. 比较IE6的不同之处,与IE8 IE11 比较

    文档申明为  <!DOCTYPE html> IE6或者IE特有的一些东西 1.盒子模型 IE6:(使用 !DOCTYPE 声明指定 standards-compliant 模式) mar ...

  9. flashdevelop 开发技巧

    FlashDevelop用来编写AS3代码,Flash CS5用来编辑程序所需要的资源(图片,声音-),Flash CS5自带有Flex SDK,在目录 C:\Program Files\Adobe\ ...

  10. SQL技术内幕-13 SQL优化方法论之分析实例级别的等待

    优化方法论的第一步是在实例级别上找出什么类型的等待占用了大部分的等待时间,这可以通过查询动态管理图(DMV,dynamic management view)sys.dm_os_wait_stats 运 ...