spring mvc国际化资源实现

原创 2017年06月16日 18:54:45

springMVC给我们提供了国际化支持,简单来说就是设置整个系统的运行语言,然后根据系统的运行语言来展示对应语言的页面,一般我们称之为多语言。通过源码我们可以了解到springMVC对多语言的支持就是设置Locale的语言信息来实现的,只不过是设置了通过cookie、session等方式设置而已。

springMVC多语言具体由拦截器LocaleChangeInterceptor,解析器LocaleResolver,资源管理器来实现。

LocaleChangeInterceptor需要在配置文件中设置,用来获取客户端的Local信息。

解析器LocaleResolver接口有四个默认实现的类AcceptHeaderLocaleResolver,FixedLocaleResolver、CookieLocaleResolver和SessionLocaleResolver。

AcceptHeaderLocaleResolver:其实没有任何具体实现,是通过浏览器头部的语言信息来进行多语言选择。

FixedLocaleResolver:设置固定的语言信息,这样整个系统的语言是一成不变的,用处不大。

CookieLocaleResolver:将语言信息设置到Cookie中,这样整个系统就可以获得语言信息

SessionLocaleResolver:与CookieLocaleResolver类似将语言信息放到Session中,这样整个系统就可以从Session中获得语言信息。




资源管理器同样需要在配置文件中配置,主要有两个实现类:ResourceBundleMessageSource 和ReloadableResourceBundleMessageSource

要关心的是这两个的区别:

1.ResourceBundleMessageSource在xml配置中无法指定编码:
     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
     <property name="basenames">
          <list>
               <value >error</value >
               <value >message</value >
          </list>    
</property>
     </bean>


而ReloadableResourceBundleMessageSource可以指定编码,譬如:
     <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="defaultEncoding" value ="gbk" />
        <property name="basename" value ="message" />
    </bean>


2.加载资源文件的方式不同:
  ResourceBundleMessageSource的加载,使用ClassUtils.getDefaultClassLoader()加载器,getDefaultClassLoader方法;
  JVM默认的加载方式,先从当前线程中获取类加载器,如果没有,就获取这个类本身的类加载器
  ReloadableResourceBundleMessageSource默认也使用ClassUtils.getDefaultClassLoader()加载器。
  ReloadableResourceBundleMessageSource加载时,默认使用DefaultResourceLoader,他会先判断资源path是否带有classpath:前缀,如果有,用 ClassPathResource去加载资源文件,如果没有试着用文件协议的url去访问,再没有就在contextPath即WEB-INF下查找。


资源配置文件的时候注意useCodeAsDefaultMessage属性设置,默认为false,这样当Spring在ResourceBundle中找不到messageKey的话,就抛出NoSuchMessageException,   把它设置为True,则找不到不会抛出异常,而是使用messageKey作为返回值。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spring mvc之JSR303框架实现数据格式化,数据验证,资源国际化

今天使用JSR303框架实现 mvc的3个重要的部分 数据格式化 数据验证 资源国际化 要使用到的3个jar包: hibernate-validator-4.3.2.Final.jar validat...

Spring MVC国际化的实现

 springMVC的国际化: 1 如何定义资源化文件:基名+语言名 2 使用拦截器处理国际化的流程 使用拦截器拦截设置语言的请求     LocaleChangeInt...

spring MVC国际化的简单实现

需要的工程jar包这里就不多说,网上有很多可以下载。下面直接入正题 要实现的功能如下,点击语言列表可以切换语言 2.下面是需要的一些文件下面是几种语言的.properties文件 ...

Spring MVC 国际化

一、Spring MVC 国际化       1、静态国际化,依赖于浏览器语言环境的设置        在-servlet.xml中进行配置:绑定国际化资源文件,这些国际化的文件放置在SRC目录下:...

spring 国际化 spring mvc

  • 2011年07月20日 11:33
  • 28KB
  • 下载

spring mvc 国际化

1.web.xml i18n i18n org.springframework.web.servlet.DispatcherServlet con...
  • nohero1
  • nohero1
  • 2015年11月11日 16:00
  • 392

Spring MVC国际化

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

spring mvc中,如何在 Java 代码里,获取 国际化 内容

在spring MVC中,要想实现国际化,必须要在xml中定义如下:   messages  其中,id 的值必须是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring mvc国际化资源实现
举报原因:
原因补充:

(最多只允许输入30个字)