spring mvc 国际化

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

spring 配置文件:

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

Controller中配置:

 1 @Controller
 2 public class LoginController {
 3     @Autowired
 4     private LocaleResolver localeResolver;
 5     @Autowired
 6     private ApplicationContext appCtx;
 7
 8     @RequestMapping(value = "changeLocale")
 9     public String changeLocale(String locale,HttpServletRequest request,HttpServletResponse response) {
10
11         //locale 格式为 language_country,例如 en_US,zh_CN
12         Locale setLocale = new Locale(locale.split("_")[0] , locale.split("_")[1]);
13         localeResolver.setLocale(request, response, setLocale);
14
15         //设置变量 locale 为当前 Locale
16         request.setAttribute("locale", localeResolver.resolveLocale(request));
17
18         //按当前 Locale 获取国际化信息
19         RequestContext requestContext = new RequestContext(request);
20         System.out.println(requestContext.getMessage("username"));
21
22         //按指定 Locale 获取国际化信息
23         System.out.println(appCtx.getMessage("username", null, Locale.CHINA));
24         System.out.println(appCtx.getMessage("username", new Object[]{}, Locale.US));
25
26         return "locale";
27         //return "redirect:/";//跳转回原页面
28     }
29 }

locale.jsp代码:

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

MessageBundle_en_US.properties:

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

MessageBundle_zh_CN.properties:

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

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

时间: 2024-10-07 21:34:21

spring mvc 国际化的相关文章

Spring MVC国际化配置

写在前面 项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,这里查询相关资料,整理下Spring MVC如何配置并实现国际化. 具体实现 对于Spring MVC的国际化这里我是基于session来实现的,具体做法如下: 1.首先我们需要在XML配置文件中进行如下配置: <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSour

Spring MVC国际化

本文基于Spring MVC 注解-让Spring跑起来.本文提到的国际化是Spring实现国际化的方案之一. (1) 在applicationContext.xml中添加以下配置信息: [java] view plaincopy <!-- 国际化配置 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"

Spring MVC基础知识整理?国际化和异常处理

概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. 国际化 Spring对国际化的语言采用配置的方式存储到配置文件中,在springservletconfig.xml文件,添加下面语句: <bean id="messageSource" class="org.springframework.context.support.

Spring MVC异常统一处理(异常信息的国际化,日志记录)

JAVA EE项目中,不管是对底层的数据操作,还是业务层的处理过程,还是控制层的处理,都不可避免的会遇到各种可预知的(业务异常主动抛出).不可预知的异常需要处理.一般dao层.service层的异常都会直接抛出,最后由controller统一进行处理,每个过程都单独处理异常,且要考虑到异常信息和前端的反馈,代码的耦合度高,不统一,后期维护的工作也多. 同时还必须考虑异常模块和日志模块.国际化的支持. 因此需要一种异常处理机制将异常处理解耦出来,这样保证相关处理过程的功能单一,和系统其它模块解耦,

spring MVC 使用 hibernate validator验证框架,国际化配置

spring mvc使用hibernate validator框架可以实现的功能: 1. 注解java bean声明校验规则. 2. 添加message错误信息源实现国际化配置. 3. 结合spring form中的errors标签展现错误信息. 优势: 代码简洁. 实现: 1. 使用hibernate validator 至少要引入两个jar包: hibernate-validator-5.3.4.Final.jar , validation-api-1.1.0.Final.jar 2. JS

基于Spring + Spring MVC + Mybatis + shiro 高性能web构建

一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJS,做了大量的研究,对前后端交互有了更深层次的认识. 今天抽个时间写这篇文章,我有预感,这将是一篇很详细的文章,详细的配置,详细的注释,看起来应该很容易懂. 用最合适的技术去实现,并不断追求最佳实践.这就是架构之道. 希望这篇文章能给你们带来一些帮助,同时希望你们可以为这个项目贡献你的想法. 源码地址:https://github.com/starzou/quick4j 点击打开 看我们的项目结构: 是一个典型

Spring MVC程序

Spring MVC程序(IDEA开发环境) 回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的时代.一般接触到一个新的Web框架,都会想问这个框架优势在哪?或者比其他框架好在哪里?如果没有使用Spring MVC框架,而是使用其他框架并且能够很好地满足要求,这样转换框架或许不是一个好主意.如果像我这样首次接触Web开发框架,Spring MVC还是值得优先考虑的. Web层,更确切说是在框架处理

详解Spring MVC 4之DispatcherServlet

Spring MVC 4与其它MVC框架类似,都是基于请求驱动的,通过中央Servlet处理器,将请求转发到控制器然后完成相应的功能.Spring的 DispatcherServlet与其它MVC框架不同的是,它与Spring的IoC容器集成并允许用户使用Spring的其它特性.     1. DispatcherServlet的作用 Spring MVC 4的工作流如下图所示.DispatcherServlet充当了"前端控制器"的角色. DispatcherServlet实际上就是

SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProjects:是抽取出的基础项目,主要封装了一些通用的操作. SpringMVC3Demo:就是管理系统所在的项目. WeiXinAPI:是之前做微信管理平台测试时封装一些操作,如果不需要把该项目移除即可. 注:项目的前端UI框架用的是国外的一个基于Bootstrap框架的开发的Demo,如不需要替换为