制作网页时创建超链接,邢台视频优化效果,wordpress添加版权信息,内容营销pptSpring各模块都支持国际化#xff0c;SpringMVC也同样支持。DispatcherServlet通过Locale Resovler自动根据客户端的Locale支持国际化。
request请求上来后#xff0c;DispatcherServlet查找并设置Locale Resovler#xff0c;我们可以通过RequestContext.getLocale()获取到…Spring各模块都支持国际化SpringMVC也同样支持。DispatcherServlet通过Locale Resovler自动根据客户端的Locale支持国际化。
request请求上来后DispatcherServlet查找并设置Locale Resovler我们可以通过RequestContext.getLocale()获取到对应的Locale。
此外可以利用拦截器在特定情况下修改locale比如根据请求参数修改locale。这项功能对于通过页面选项指定locale的应用非常有用比如在页面上选择中文/英文的方式指定应用的语言。
Locale Resolver和拦截器定义在org.springframework.web.servlet.i18n包可以通过配置文件指定Spring支持如下locale resolver
Time ZoneHeader ResolverCookie ResovlverSession ResolverLocale Interceptor
Time Zone
除获取用户locale之外有时候也需要获取到用户的时区LocaleContextResolver接口通过扩展LocaleResovler可提供对时区的支持。
可通过RequestContext.getTimeZone() 获取用户时区。
Header Resolver
Header Resolver通过解析请求头的accept-language从而获取到客户端浏览器发送上来的相关头信息。
SpringMVC提供的Header ResolverAcceptHeaderLocaleResolver。
浏览器默默认会发送相关的请求头信息
SpringMVC通过DispatcherServlet.properties指定的默认LocaleResolver正是Header Resolver
org.springframework.web.servlet.LocaleResolverorg.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
Cookie Resolver
检查客户端发送上来的请求的cookie中是否包含Locale或TimeZone信息如包含则应用该信息创建Locale。
SpringMVC提供的Cookie Resolverorg.springframework.web.servlet.i18n.CookieLocaleResolver。
通过如下方式配置
bean idlocaleResolver classorg.springframework.web.servlet.i18n.CookieLocaleResolverproperty namecookieName valueclientlanguage/!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) --property namecookieMaxAge value100000//beanSession Resolver
SessionLocaleResolver通过session获取客户端的Locale和TimeZone信息信息存储在HttpSession中随着session的失效而失效。
Locale Interceptor
使用拦截器、通过页面参数设置Locale。SpringMVC提供了一个LocaleChangeInterceptor拦截器可以直接使用。
比如
bean idlocaleChangeInterceptorclassorg.springframework.web.servlet.i18n.LocaleChangeInterceptorproperty nameparamName valuesiteLanguage/
/beanbean idlocaleResolverclassorg.springframework.web.servlet.i18n.CookieLocaleResolver/bean idurlMappingclassorg.springframework.web.servlet.handler.SimpleUrlHandlerMappingproperty nameinterceptorslistref beanlocaleChangeInterceptor//list/propertyproperty namemappingsvalue/**/*.viewsomeController/value/property
/bean配置localeChangeInterceptor指定其参数名称为siteLanguage将该拦截器配置到SimpleUrlHandlerMapping上对*.view请求根据请求参数siteLanguage决定其locale。
上一篇 Spring MVC 六 - DispatcherServlet处理请求过程