javascript
SpringMVC学习系列(8) 之 国际化
一.基于瀏覽器請求的國際化實現:
1)在 spring的配置文件中添加
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"><!-- 國際化信息所在的文件名 --> <property name="basename" value="locale/message" /> <!-- 如果在國際化資源文件中找不到對應代碼的信息,就用這個代碼作為名稱 --> <property name="useCodeAsDefaultMessage" value="true" /> </bean>2)在resources 下 建立文件夾 locale ,在locale下添加messages.properties、messages_zh_CN.properties、messages_en_US.properties三個文件
比如?resources/locale/messages_zh_CN.properties ?下的內容
message.login.fail=登錄失敗 message.login.success=登錄成功比如?resources/locale/messages_en_US.properties ?下的內容
message.login.fail=Login Fail message.login.success=Login Success3)在后臺中讀取資源化文件中的內容,并返回給前臺
在Controller 文件添加一個方法
@RequestMapping(value = "/testMessage.do")public String testMessage(HttpServletRequest request,Model model){logger.debug("enter MainController.testMessage()");//從后臺代碼獲取國際化信息RequestContext requestContext = new RequestContext(request);model.addAttribute("message", requestContext.getMessage("message.login.success"));return "testmessage";}4)前臺顯示
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@taglib prefix="spring" uri="http://www.springframework.org/tags" %><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body>下面展示的是后臺獲取的國際化信息:<br/> ${message}在前臺上直接顯示國際化文件中的內容
<spring:message code="message.login.fail" ></spring:message> </body> </html>
?
二.基于Session的國際化實現:
1)在 spring的配置文件中添加
<mvc:interceptors> <!-- 國際化操作攔截器 如果采用基于(請求/Session/Cookie)則必需配置 --> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> </mvc:interceptors> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />2)在后臺中
@RequestMapping(value = "/sessiontest", method = {RequestMethod.GET})
public String seesionTest(HttpServletRequest request, Model model,
@RequestParam(value = "langType", defaultValue = "zh") String langType)
{
if (langType.equals("zh"))
{
Locale locale = new Locale("zh", "CN");
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
}
else if (langType.equals("en"))
{
Locale locale = new Locale("en", "US");
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME, locale);
}
else
request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,
LocaleContextHolder.getLocale());
// 從后臺代碼獲取國際化信息
RequestContext requestContext = new RequestContext(request);
model.addAttribute("message", requestContext.getMessage("message.login.success"));
return "testmessage";
}
3) 同上
? 4) 在jsp 頁面上加入
使用session 切換 <a href="${ctx }/sessiontest?langType=zh">中文</a> | <a href="${ctx }/sessiontest?langType=en">英文</a><br/>${message}<br>
?
三.基于Cookie的國際化實現:
同session 類似,不與session方式同時存在
1)在 spring的配置文件中添加
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />2)后臺
@RequestMapping(value = "/cookietest", method = {RequestMethod.GET})public String cookietest(HttpServletRequest request, HttpServletResponse response, Model model,@RequestParam(value = "langType", defaultValue = "zh") String langType){if (langType.equals("zh")){Locale locale = new Locale("zh", "CN");(new CookieLocaleResolver()).setLocale(request, response, locale);}else if (langType.equals("en")){Locale locale = new Locale("en", "US");(new CookieLocaleResolver()).setLocale(request, response, locale);}else(new CookieLocaleResolver()).setLocale(request, response, LocaleContextHolder.getLocale());// 從后臺代碼獲取國際化信息RequestContext requestContext = new RequestContext(request);model.addAttribute("message", requestContext.getMessage("message.login.success"));return "testmessage";}
3) 同上
? 4) 在jsp 頁面上加入
使用cookie 切換 <a href="${ctx }/cookietest?langType=zh">中文</a> | <a href="${ctx }/cookietest?langType=en">英文</a><br/> ${message}<br>四.基于URL請求的國際化的實現:
1)自定義一個類
import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.DispatcherServlet; import org.springframework.web.servlet.LocaleResolver;public class MyAcceptHeaderLocaleResolver extends AcceptHeaderLocaleResolver {private Locale myLocal;public Locale resolveLocale(HttpServletRequest request) {return myLocal;} public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {myLocal = locale;}}2)在 spring的配置文件中添加
<bean id="localeResolver" class="xx.xxx.xxx.MyAcceptHeaderLocaleResolver"/>“xx.xxx.xxx”是剛才添加的MyAcceptHeaderLocaleResolver 類所在的包名。
保存之后就可以在請求的URL后附上 locale=zh_CN 或 locale=en_US?
參考:http://www.cnblogs.com/liukemng/p/3750117.html
?
轉載于:https://www.cnblogs.com/panie2015/p/5855645.html
總結
以上是生活随笔為你收集整理的SpringMVC学习系列(8) 之 国际化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Log4net 日志使用介绍
- 下一篇: javascript高级程序设计--笔记