基于session 的springMvc 国际化
项目中采用springMvc的框架,需要动态切换语言,找了一些资料,最后决定采用基于session的动态切换,实现动态切换中文,英文,韩文,其实就是把中文翻译成其他语言显示
springMvc国际化包括两个方面,一个是前台页面的国际化,spring有自己的标签可以去实现,非常方便,另一个是后台java代码种涉及中文的国际化。
1、项目总体结构

有关bean的主要配置在spring-mvc.xml里配置,messages文件夹里放的是需要翻译的内容格式如下:key = value 的格式
英文: 
中文: 
韩文 :
需要注意的是 配置文件里面涉及到的中文需要转成unicode编码,否则翻译后会出现乱码的情况。
2、在spring-mvc加入以下配置:
<!-- 国际化资源配置,资源文件绑定器-->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 国际化资源文件配置,指定properties文件存放位置 -->
<property name="basename" value="classpath:messages/message" />
<!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称 -->
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
<!-- 动态切换国际化 ,国际化放在session中 -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"></bean>
<mvc:interceptors>
<!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<!-- 通过这个参数来决定获取那个配置文件 -->
<property name="paramName" value="language" />
</bean>
</mvc:interceptors>
需要注意的是 basename的值需要配置到messages/message 这一级别。
也就是国际化文件存放的位置,一直到第一个下划线前面。
3、前台页面实现
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="mvc" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
选择语言:<a href="?language=zh_CN">中文</a> | <a href="?language=en_US">英文</a> | <a href="?language=ko_KR">韩文</a>
<br></br>
这里展示选择对应语言后的“你好”的翻译(前台标签翻译):
<spring:message code="你好" />
<br></br>
这里展示选择对应语言后的“欢迎你”的翻译(后台代码翻译):${welcome} </body>
</html>
需要注意的是 页面引入spring的标签, code我这里写的是中文,对应那三个翻译文件里的key 如果code在翻译文件里没有找到对应的key则使用code里面的内容 这个配置在spring'-mvc 里指定了。
4、后台代码的实现
package com.ccg.controller; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.support.RequestContext; @Controller
@RequestMapping("test")
public class TestController { @RequestMapping("view")
public ModelAndView view(HttpServletRequest request, HttpServletResponse response){
//spring翻译使用req.getmessage()方法
RequestContext req = new RequestContext(request);
ModelAndView model = new ModelAndView("test");
model.addObject("welcome", req.getMessage("欢迎你"));
return model;
}
}
5、效果展示



总结一下springMvc的国际化的关键点:
1)指定spring国际化需要翻译的文件位置,需要注意的是路径一定要写完整。
2)指定spring国际化时的参数,上文中我用到是language,配置好之后,spring会根据请求中该参数的值找到对应的配置文件。
3)前台页面使用spring标签,code对应配置文件中的key,推荐使用中文,万一对应不上的时候默认显示code里面的内容(需要在spring-mvc.xml里指定配置)
4)后台代码国际化使用RequestContext 对象的getMessage 方法,返回String。
以上就是我对springMvc国际化的实现,有问题可以留言。
基于session 的springMvc 国际化的更多相关文章
- springmvc国际化 基于请求的国际化配置
springmvc国际化 基于请求的国际化配置 基于请求的国际化配置是指,在当前请求内,国际化配置生效,否则自动以浏览器为主. 项目结构图: 说明:properties文件中为国际化资源文件.格式相关 ...
- springmvc国际化 基于浏览器语言的国际化配置
当前标签: springmvc springmvc国际化 基于浏览器语言的国际化配置 苏若年 2013-10-09 13:03 阅读:305 评论:0 SpringMVC中应用Ajax异步通讯 ...
- SpringMVC 国际化
SpringMVC学习系列(8) 之 国际化 在系列(7)中我们讲了数据的格式化显示,Spring在做格式化展示的时候已经做了国际化处理,那么如何将我们网站的其它内容(如菜单.标题等)做国际化处理呢? ...
- JAVA记录-SpringMVC国际化配置
1.搭建SpringMVC框架,不过多阐述 2.spring-mvc.xml加入以下配置: <!-- 国际化资源配置,资源文件绑定器--> <bean id="messag ...
- springMVC国际化配置和使用
下面是基于session的,springMVC国际花的一个例子: 需求是 输入url:展示中文界面 http://localhost:8080/MySSM/user?lang=zh 输入url: 展 ...
- SpringMVC国际化
如何将我们网站的其它内容(如菜单.标题等)做国际化处理呢?这就是本篇要将的内容->国际化. 一.基于浏览器请求的国际化实现: 首先配置我们项目的springservlet-config.xml文 ...
- 你还不了解基于session的授权认证吗?
前言 在漫长的开发过程中,权限认证是一个永恒不变的话题,随着技术的发展,从以前的基于sessionId的方式,变为如今的token方式.session常用于单体应用,后来由于微服务的兴起,分布式应用占 ...
- 【SpringMVC】SpringMVC系列14之SpringMVC国际化
14.SpringMVC国际化 14.1.概述 14.2.用户切换选择语言
- 基于session认证 相亲小作业
基于session认证 相亲小作业 用户登录 如果男用户登录,显示女生列表 如果女用户登录,显示男生列表 urls ===========================urls========== ...
随机推荐
- 清除css、javascript及背景图在浏览器中的缓存
在实际项目开发过过程中,页面是上传到服务器上的.而为了减少服务器的压力,让用户少加载,浏览器会将图片.css.js缓存到本地中,以便下次访问网站时使用.这样做不仅减少了服务器的压力,并且也减少了用户的 ...
- UI控件库
UI控件库分享:DWZ(j-UI).LigerUI.Linb DWZ(j-UI): 在线演示地址:http://demo.dwzjs.com 在线文档:http://demo.dwzjs.com/do ...
- C# 对Outlook联系人的增、删、查
原文:C# 对Outlook联系人的增.删.查 [转] 注:定义变量 Outlook.Application myOlApp = new Outlook.ApplicationClass(); Out ...
- Fedora 20 Gnome安装及配置记录
下载了F20的Gnome版,原先安装的是19KDE的,原因是昨晚看书,觉得电脑开着也没什么事情,倒不如看看能不能升级或下载点东西 原先是KDE的界面,所以打算换换风格,使用下Gnome,不过更换过程总 ...
- mcstructs使用CMake生成Makefile文件
CMakeLists.txt project(MCSTRUCTS) set(SRC_LIST src/main.c src/mcslist.c src/mcsringbuf.c) add_execut ...
- Ruby on Rails (ROR)类书籍
Ruby on Rails (ROR)类书籍下载地址及其他(整理) Ruby on Rails 如此之热,忍不住也去看了看热闹,现在把一些相关的电子图书下载地址整理下,方便有兴趣的朋友. 2006-0 ...
- hudson任务配置说明
hudson任务配置说明 Discard Old Builds:hudson默认保留过去的构建,勾选此选项,则可以设置构建记录的有效期: (帮助:这里控制着您想要在hudson所在的磁盘把构建记录存储 ...
- LigerUI一个前台框架增、删、改asp.net代码
LigerUI一个前台框架增.删.改asp.net代码的实现 先上代码:前台代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...
- .NET MVC通过反射获取数据修
.NET MVC通过反射获取数据修 折磨了我一个晚上的问题,奈何对物理的反射印象太深了,整天去想着物理的反射.折射怎么解.感谢少将哥哥给我的指点,经过一个晚上对反射的恶补,最终搞定了.纪念一下. 1. ...
- IT团队管理
如果在IT项目实施中选出最难解决的几个问题,那么管理问题一定名列前茅.在管理问题中,团队管理又是其中的难点.一个项目管理的 好坏,很大程度就体现在团队的建设和管理上.团队管理涉及到管理学.心理学和哲学 ...