springMVC國際化配置和使用
下面是基於session的,springMVC國際花的一個例子:
需求是
輸入url:展示中文介面
http://localhost:8080/MySSM/user?lang=zh
輸入url: 展示英文介面
http://localhost:8080/MySSM/user?lang=en
下面是我demo專案的例子使用:
1.工程結構:
2.springMVC配置檔案中 國際化相關的配置:
<!-- 儲存區域設定資訊 SessionLocaleResolver類通過一個預定義會話名將區域化資訊儲存在會話中。 --> <bean id="localeResolver"class="org.springframework.web.servlet.i18n.SessionLocaleResolver" /> <!-- 國際化資原始檔 --> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:messages" /> <!--如果在國際化資原始檔中找不到對應程式碼的資訊,就用這個程式碼作為名稱 --> <property name="useCodeAsDefaultMessage" value="true" /> </bean> <mvc:interceptors> <!-- 該攔截器通過名為”lang”的引數來攔截HTTP請求,使其重新設定頁面的區域化資訊 --> <!-- <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />--> <bean class="com.cy.interceptor.LanguageInterceptor"> <property name="paramName" value="lang" /> </bean> </mvc:interceptors>
注意我重新使用了自己的攔截器:com.cy.interceptor.LanguageInterceptor
因為原來的攔截器org.springframework.web.servlet.i18n.LocaleChangeInterceptor,瀏覽器必須要輸入lang=en_US,lang=zh_CN,才能改變語言。但是覺得輸入這麼多麻煩,因為一般就認為zh中文,en英文了。
3.語言LanguageInterceptor.java:
我只是把LocaleChangeInterceptor原始碼拷貝了一部分過來;做些修改,主要是:
localeResolver.setLocale(request, response, newLocale)設定語言了;
package com.cy.interceptor; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.servlet.support.RequestContextUtils; /** * 語言攔截器 * @author CY * */publicclass LanguageInterceptor extends HandlerInterceptorAdapter{ /** * Default name of the locale specification parameter: "locale". */publicstaticfinal String DEFAULT_PARAM_NAME = "locale"; private String paramName = DEFAULT_PARAM_NAME; publicvoid setParamName(String paramName) { this.paramName = paramName; } public String getParamName() { returnthis.paramName; } @Override publicboolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Locale newLocale = getLocale(request.getParameter(getParamName())); LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { thrownew IllegalStateException("No LocaleResolver found: not in a DispatcherServlet request?"); } localeResolver.setLocale(request, response, newLocale); returntrue; } //根據language 獲取Localepublicstatic Locale getLocale(String language){ Locale locale = new Locale("zh", "CN");
if(language!=null && language.equals("en")){ locale = new Locale("en", "US"); } return locale; } }
4.如果想在controller中獲取messages配置檔案中的值怎麼做呢?
下面是一部分程式碼:
import org.springframework.web.servlet.support.RequestContext; import org.springframework.web.servlet.support.RequestContextUtils; import java.util.ResourceBundle; @Controller public class UserController { private static Logger logger = Logger.getLogger(UserController.class); @Autowired private UserService userService; /** * 從國際化資源配置檔案中根據key獲取value 方法一 * @param request * @param key * @return */ public static String getMessage(HttpServletRequest request, String key){ Locale currentLocale = RequestContextUtils.getLocale(request); String lang = currentLocale.getLanguage(); ResourceBundle bundle = ResourceBundle.getBundle("messages_"+lang, currentLocale); return bundle.getString(key); } /** * 從國際化資源配置檔案中根據key獲取value 方法二 * @param request * @param key * @return */ public static String getMessage2(HttpServletRequest request, String key){ RequestContext requestContext = new RequestContext(request); String value = requestContext.getMessage(key); return value; } @RequestMapping("/user") public ModelAndView getUsers(HttpServletRequest request){ List<VoUser> userList = userService.getUsers(); ModelAndView mv = new ModelAndView(); //從message中獲取文字 //String showUserInfo = getMessage(request, "showUserInfo"); String showUserInfo = getMessage2(request, "showUserInfo"); mv.addObject("showUserInfo", showUserInfo); mv.addObject("userList", userList); mv.setViewName("user"); return mv; } }
5.jsp中使用spring:message code:主要是:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<spring:message code="userName"/>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="resources/bootstrap/bootstrap.min.css"> <title><spring:message code="userManage"/></title> <style type="text/css"> .container{ margin-top: 30px; } .imgclass{ height: 100px; } </style> </head> <body> <div class="container"> <p class="text-center bg-success">${showUserInfo}</p> <div class="form-horizontal"> <c:forEach var="user" items="${userList }"> <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label"><spring:message code="userName"/></label> <div class="col-sm-10"> <input class="form-control" placeholder="Email" value="${user.name }"> </div> </div> <div class="form-group"> <label for="inputPassword3" class="col-sm-2 control-label"><spring:message code="age"/></label> <div class="col-sm-10"> <input class="form-control" placeholder="Password" value="${user.age }"> </div> </div> <div class="form-group"> <label for="inputPassword3" class="col-sm-2 control-label"><spring:message code="photoName"/></label> <div class="col-sm-10"> <input class="form-control" value="${user.photoName }"> </div> </div> <div class="form-group"> <label for="inputPassword3" class="col-sm-2 control-label"><spring:message code="photo"/></label> <div class="col-sm-10"> <img class="imgclass" src="getImg?username=${user.name }&photoName=${user.photoName}"/> </div> </div> </c:forEach> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <a href="toAddUser" class="btn btn-default"><spring:message code="addUser"/></a> </div> </div> </div> </div> </body> <script src="resources/js/jquery.min.js"></script> <script src="resources/bootstrap/bootstrap.min.js"></script> <script type="text/javascript"> $(function(){ }); </script> </html>
6.messages_zh.properties和messages_en.properties配置:
userManage=userManagement
userName=username
age=age
photoName=photo name
photo=photo
addUser=add user
showUserInfo=this is display user information
userManage=\u7528\u6237\u7BA1\u7406
userName=\u59D3\u540D
age=\u5E74\u9F84
photoName=\u7167\u7247\u540D\u79F0
photo=\u7167\u7247
addUser=\u589E\u52A0\u7528\u6237
showUserInfo=\u8FD9\u91CC\u662F\u5C55\u73B0\u7528\u6237\u4FE1\u606F
效果:
相關推薦
springMVC國際化配置和使用
下面是基於session的,springMVC國際花的一個例子: 需求是輸入url:展示中文介面http://localhost:8080/MySSM/user?lang=zh輸入url: 展示英文介面http://localhost:8080/MySSM/user?
SpringMVC國際化配置
ase star tor word tle pack 屬性文件 enc int 一、什麽是國際化: 國際化是設計軟件應用的過程中應用被使用與不同語言和地區 國際化通常采用多屬性文件的方式解決,每個屬性文件保存一種語言的文字信息, 不同語言的用戶看到的是不同的內容
Java框架學習_SpringMVC(一)SpringMVC的配置和測試使用、SpringMVC的核心架構
SpringMVC+Spring+Mybatis+Maven,SpringMVC是Spring家族的前端框架,具體概念請百度,下面建立工程直接擼 1、SpringMVC的配置和簡單測試使用: 匯入jar包:springmvc所用jar包 工程目錄: 編寫Hell
springMVC 配置和使用
test struts logging 後綴 設置 XML figure 路徑 -a springMVC相對於Struts2學習難度較為簡單,並且更加靈活輕便. 第一步:導入jar包 spring.jar、spring-webmvc.jar、commons-logging.
IDEA用maven創建springMVC項目和配置
beans connector 點擊 lease odi tar 記得 相關信息 iyu 原文地址:http://blog.csdn.net/cquwel 這段時間在學習javaweb的一些知識,然後接觸到了springmvc框架。框架的創建和配置一直是新手入門的一個難題,
springMVC檢視解析器的配置和使用
在spring-servlet.xml中配置檢視解析器 <!-- 配置檢視解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
web.xml中Spring和SpringMVC的配置
Spring配置檔案 1.預設配置。Spring在啟動時載入的配置檔案預設的是WEB-INF下的applicationContext.xml,web.xml中的配置如下。 <listener> <listener-class> org.spri
springmvc.xml(註解和非註解的詳細配置)
註解和非註解的一些配置說明,方便自己以後檢視! 非註解如下: <!--非註解開始 --> <!--非註解的處理器介面卡 --> <!-- 處理器介面卡的配置 所有的處理器介面卡都需要實現HandlerAdapter介面 -->
SpringMVC 手動配置Bean和自動註冊Bean
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spr
springMVC中web.xml配置/和/*的區別
新建一個spring專案發現無法訪問到jsp頁面,靜態html也無法訪問,終於找到答案,原來是spring攔截配置的不對,一直寫的是這種配置,今天發現是不對的,好在找到了答案:) springmvc /* 一、我們都知道在基於Spring的Application中,需要在w
springmvc之配置多個國際化語言資源
在開發網站的時候,經常要用到國際化資源配置,如果是配置單個資源就比較簡單: <!-- 國際化配置 注意:其中的id必須為:messageSource;value的值為資原始檔名 --> <bean id="messageSource" class="or
SpringMVC通過配置解決Date按指定格式顯示,區分日期和日期時間
問題源於專案中對於日期和日期時間有不同的顯示需求,比如生日:1988-08-08,而建立時間:2018-05-01 13:23:30,原來採用註解來解決。@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
SpringMVC第十篇——攔截器的配置和使用
Springmvc的配置檔案中配置: <!-- SPringmvc的攔截器鏈--> <mvc:interceptors> <
IDEA用maven建立springMVC專案和配置(XML配置和Java配置)
這段時間在學習javaweb的一些知識,然後接觸到了springmvc框架。框架的建立和配置一直是新手入門的一個難題,所以我就寫一下我的配置過程,以供參考,另外因為spring4的新特性可以用java來配置,網上相關資料較少,所以我參考了很多博文後,把xml和j
Springmvc執行緒池配置和使用
1.Springmvc執行緒池配置: 在spring上下文檔案ApplicationContext.xml中新增 <!-- 執行緒池配置 --> <bean id="threadPool" class="org.springframework.sch
springMvc執行流程和配置檔案作用
1、使用者傳送請求至前端控制器DispatcherServlet 2、DispatcherServlet收到請求呼叫HandlerMapping處理器對映器。 3、處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一
【springmvc 的請求流程二】:(springmvc 的三大元件之一)處理器對映器的配置和通過處理器對映器返回請求鏈的原始碼流程
總結 策略模式,每一種對映器方案都提供了對url 的解析的方案都是不同的 DispatcherServlet 拿著執行鏈去尋找對應的處理器介面卡(HandlerAdapter)為什麼要引入介面卡?因為處理器(Handler)有很多種,DispatcherServlet
springmvc mybatis 配置一對多的關係使用 及實體類寫法2Spring MVC 會按請求引數名和 POJO 屬性名進行自動匹配自動為該物件填充屬性值。支援
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transition
IDEA用maven建立springMVC專案和配置(XML配置和Java配置)(修正版)
這段時間在學習javaweb的一些知識,然後接觸到了springmvc框架。框架的建立和配置一直是新手入門的一個難題,所以我就寫一下我的配置過程,以供參考,另外因為spring4的新特性可以用java來配置,網上相關資料較少,所以我參考了很多博文後,把xml和java兩種配置方式都試了一下。 工具準備:
springMVC返回jsp和html的配置,已經springmvc返回html亂碼的解決方案
初期的框架搭建是用jsp返回,搭建後期打算用beetl模版引擎,就換回來html。整了一回兒記錄一下: jsp: spring-mvc.xml: <bean class="org.springframework.web.servlet.vi