国际化概述
- 默认情况下,SpringMVC 根据 Accept-Language 参数判断客户端的本地化类型。
- 当接受到请求时,SpringMVC 会在上下文中查找一个本地化解析器(LocalResolver),找到后使用它获取请求所对应的本地化类型信息。
- SpringMVC 还允许装配一个动态更改本地化类型的拦截器,这样通过指定一个请求参数就可以控制单个请求的本地化类型。
- SessionLocaleResolver & LocaleChangeInterceptor 工作原理
本地化解析器和本地化拦截器
- AcceptHeaderLocaleResolver:根据 HTTP 请求头的 Accept-Language 参数确定本地化类型,如果没有显式定义本地化解析器, SpringMVC 使用该解析器。

|
public class AcceptHeaderLocaleResolver implements LocaleResolver { @Override public Locale resolveLocale(HttpServletRequest request) { return request.getLocale(); } @Override public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { throw new UnsupportedOperationException( “Cannot change HTTP accept header – use a different locale resolution strategy”); } } |
- CookieLocaleResolver:根据指定的 Cookie 值确定本地化类型
- SessionLocaleResolver:根据 Session 中特定的属性确定本地化类型
- LocaleChangeInterceptor:从请求参数中获取本次请求对应的本地化类型。
1实验代码:实现中英文语言切换
- 配置SessionLocaleResolver替换AcceptHeaderLocaleResolver完成中英文切换
|
<!– 配置SessionLocaleResolver对象 id必须是”localeResolver”,否则,会报错误: <bean id=”sessionLocaleResolver” class=”org.springframework.web.servlet.i18n.SessionLocaleResolver”></bean> –> <bean id=”localeResolver” class=”org.springframework.web.servlet.i18n.SessionLocaleResolver”></bean> |
|
HTTP Status 500 –
type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.UnsupportedOperationException: Cannot change HTTP accept header – use a different locale resolution strategy root cause java.lang.UnsupportedOperationException: Cannot change HTTP accept header – use a different locale resolution strategy |
- 配置
|
<!– 配置LocaleChangeInterceptor拦截器 –> <mvc:interceptors> <bean id=”localeChangeInterceptor” class=”org.springframework.web.servlet.i18n.LocaleChangeInterceptor”></bean> </mvc:interceptors> |
- 页面链接
|
/views/i18n.jsp 增加页面链接 |
|
<!– 切换语言 –> <a href=”testI18N?locale=zh_CN”>中文</a> | <a href=”testI18N?locale=en_US”>英语</a> |
2切换语言的原理
切换语言的参数名称必须:locale

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训课程视频供广大学员下载学习。
上一篇: 大数据培训Hadoop配置文件说明
下一篇: java培训之文件上传

