激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

2020-11-26 14:37Erola Java教程

這篇文章主要介紹了詳解SpringMVC學(xué)習(xí)系列之國(guó)際化,詳細(xì)的介紹了關(guān)于瀏覽器,Session,Cookie,URL請(qǐng)求的國(guó)際化的實(shí)現(xiàn),有興趣的可以了解一下

在系列(7)中我們講了數(shù)據(jù)的格式化顯示,spring在做格式化展示的時(shí)候已經(jīng)做了國(guó)際化處理,那么如何將我們網(wǎng)站的其它內(nèi)容(如菜單、標(biāo)題等)做國(guó)際化處理呢?這就是本篇要將的內(nèi)容—>國(guó)際化。

一.基于瀏覽器請(qǐng)求的國(guó)際化實(shí)現(xiàn):

首先配置我們項(xiàng)目的springservlet-config.xml文件添加的內(nèi)容如下:

 
?
1
 
2
3
4
5
6
<bean id="messagesource" class="org.springframework.context.support.resourcebundlemessagesource">
  <!-- 國(guó)際化信息所在的文件名 -->          
  <property name="basename" value="messages" /> 
  <!-- 如果在國(guó)際化資源文件中找不到對(duì)應(yīng)代碼的信息,就用這個(gè)代碼作為名稱 -->       
  <property name="usecodeasdefaultmessage" value="true" />     
</bean>

在com.demo.web.controllers包中添加globalcontroller.java內(nèi)容如下:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.demo.web.controllers;
 
import java.util.date;
import javax.servlet.http.httpservletrequest;
import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.servlet.support.requestcontext;
import com.demo.web.models.formatmodel;
 
@controller
@requestmapping(value = "/global")
public class globalcontroller {
  
  @requestmapping(value="/test", method = {requestmethod.get})
  public string test(httpservletrequest request,model model){
    if(!model.containsattribute("contentmodel")){
      
      //從后臺(tái)代碼獲取國(guó)際化信息
      requestcontext requestcontext = new requestcontext(request);
      model.addattribute("money", requestcontext.getmessage("money"));
      model.addattribute("date", requestcontext.getmessage("date"));
 
      
      formatmodel formatmodel=new formatmodel();
 
      formatmodel.setmoney(12345.678);
      formatmodel.setdate(new date());
      
      model.addattribute("contentmodel", formatmodel);
    }
    return "globaltest";
  }
  
}

這里展示模型還用系列(7)中的作為演示。

在項(xiàng)目中的源文件夾resources中添加messages.properties、messages_zh_cn.properties、messages_en_us.properties三個(gè)文件,其中messages.properties、messages_zh_cn.properties里面的"money", "date",為中文,messages_en_us.properties里面的為英文。

在views文件夾中添加globaltest.jsp視圖,內(nèi)容如下:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ 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>
 
 
  下面展示的是后臺(tái)獲取的國(guó)際化信息:<br/>
  ${money}<br/>
  ${date}<br/>
 
  下面展示的是視圖中直接綁定的國(guó)際化信息:<br/>
  <spring:message code="money"/>:<br/>
  <spring:eval expression="contentmodel.money"></spring:eval><br/>
  <spring:message code="date"/>:<br/>
  <spring:eval expression="contentmodel.date"></spring:eval><br/>
  
</body>
</html>

運(yùn)行測(cè)試:

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

更改瀏覽器語(yǔ)言順序,刷新頁(yè)面:

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

二.基于session的國(guó)際化實(shí)現(xiàn):

在項(xiàng)目的springservlet-config.xml文件添加的內(nèi)容如下(第一種時(shí)添加的內(nèi)容要保留):

 
?
1
 
2
3
4
5
6
<mvc:interceptors>
  <!-- 國(guó)際化操作攔截器 如果采用基于(請(qǐng)求/session/cookie)則必需配置 -->
  <bean class="org.springframework.web.servlet.i18n.localechangeinterceptor" />
</mvc:interceptors>
 
<bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver" />

更改globaltest.jsp視圖為如下內(nèi)容:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ 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>
  <a href="test?langtype=zh" rel="external nofollow" >中文</a> | <a href="test?langtype=en" rel="external nofollow" >英文</a><br/>
 
  下面展示的是后臺(tái)獲取的國(guó)際化信息:<br/>
  ${money}<br/>
  ${date}<br/>
 
  下面展示的是視圖中直接綁定的國(guó)際化信息:<br/>
  <spring:message code="money"/>:<br/>
  <spring:eval expression="contentmodel.money"></spring:eval><br/>
  <spring:message code="date"/>:<br/>
  <spring:eval expression="contentmodel.date"></spring:eval><br/>
  
</body>
</html>

更改globalcontroller.java為如下內(nèi)容:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.demo.web.controllers;
 
import java.util.date;
import java.util.locale;
import javax.servlet.http.httpservletrequest;
import org.springframework.context.i18n.localecontextholder;
import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.servlet.i18n.sessionlocaleresolver;
import org.springframework.web.servlet.support.requestcontext;
import com.demo.web.models.formatmodel;
 
@controller
@requestmapping(value = "/global")
public class globalcontroller {
  
  @requestmapping(value="/test", method = {requestmethod.get})
  public string test(httpservletrequest request,model model, @requestparam(value="langtype", defaultvalue="zh") string langtype){
    if(!model.containsattribute("contentmodel")){
      
      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());
      
      //從后臺(tái)代碼獲取國(guó)際化信息
      requestcontext requestcontext = new requestcontext(request);
      model.addattribute("money", requestcontext.getmessage("money"));
      model.addattribute("date", requestcontext.getmessage("date"));
 
      
      formatmodel formatmodel=new formatmodel();
 
      formatmodel.setmoney(12345.678);
      formatmodel.setdate(new date());
      
      model.addattribute("contentmodel", formatmodel);
    }
    return "globaltest";
  }
  
}

運(yùn)行測(cè)試:

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

三.基于cookie的國(guó)際化實(shí)現(xiàn):

把實(shí)現(xiàn)第二種方法時(shí)在項(xiàng)目的springservlet-config.xml文件中添加的

 

復(fù)制代碼 代碼如下:

<bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver" />

 

注釋掉,并添加以下內(nèi)容:

 

復(fù)制代碼 代碼如下:

<bean id="localeresolver" class="org.springframework.web.servlet.i18n.cookielocaleresolver" />

 

更改globalcontroller.java為如下內(nèi)容:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com.demo.web.controllers;
 
import java.util.date;
import java.util.locale;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import org.springframework.context.i18n.localecontextholder;
import org.springframework.stereotype.controller;
import org.springframework.ui.model;
import org.springframework.web.bind.annotation.requestmapping;
import org.springframework.web.bind.annotation.requestmethod;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.servlet.i18n.cookielocaleresolver;
//import org.springframework.web.servlet.i18n.sessionlocaleresolver;
import org.springframework.web.servlet.support.requestcontext;
 
import com.demo.web.models.formatmodel;
 
@controller
@requestmapping(value = "/global")
public class globalcontroller {
  
  @requestmapping(value="/test", method = {requestmethod.get})
  public string test(httpservletrequest request, httpservletresponse response, model model, @requestparam(value="langtype", defaultvalue="zh") string langtype){
    if(!model.containsattribute("contentmodel")){
      
      /*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());*/
      
      if(langtype.equals("zh")){
        locale locale = new locale("zh", "cn");
        //request.getsession().setattribute(sessionlocaleresolver.locale_session_attribute_name,locale);
        (new cookielocaleresolver()).setlocale (request, response, locale);
      }
      else if(langtype.equals("en")){
        locale locale = new locale("en", "us");
        //request.getsession().setattribute(sessionlocaleresolver.locale_session_attribute_name,locale);
        (new cookielocaleresolver()).setlocale (request, response, locale);
      }
      else
        //request.getsession().setattribute(sessionlocaleresolver.locale_session_attribute_name,localecontextholder.getlocale());
        (new cookielocaleresolver()).setlocale (request, response, localecontextholder.getlocale());
      
      //從后臺(tái)代碼獲取國(guó)際化信息
      requestcontext requestcontext = new requestcontext(request);
      model.addattribute("money", requestcontext.getmessage("money"));
      model.addattribute("date", requestcontext.getmessage("date"));
 
      
      formatmodel formatmodel=new formatmodel();
 
      formatmodel.setmoney(12345.678);
      formatmodel.setdate(new date());
      
      model.addattribute("contentmodel", formatmodel);
    }
    return "globaltest";
  }
  
}

運(yùn)行測(cè)試:

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

詳解SpringMVC學(xué)習(xí)系列之國(guó)際化

關(guān)于<bean id="localeresolver" class="org.springframework.web.servlet.i18n.cookielocaleresolver" />3個(gè)屬性的說(shuō)明(可以都不設(shè)置而用其默認(rèn)值):

 
?
1
 
2
3
4
5
6
7
8
<bean id="localeresolver" class="org.springframework.web.servlet.i18n.cookielocaleresolver">
  <!-- 設(shè)置cookiename名稱,可以根據(jù)名稱通過(guò)js來(lái)修改設(shè)置,也可以像上面演示的那樣修改設(shè)置,默認(rèn)的名稱為 類名+locale(即:org.springframework.web.servlet.i18n.cookielocaleresolver.locale-->
  <property name="cookiename" value="lang"/>
  <!-- 設(shè)置最大有效時(shí)間,如果是-1,則不存儲(chǔ),瀏覽器關(guān)閉后即失效,默認(rèn)為integer.max_int-->
  <property name="cookiemaxage" value="100000">
  <!-- 設(shè)置cookie可見的地址,默認(rèn)是“/”即對(duì)網(wǎng)站所有地址都是可見的,如果設(shè)為其它地址,則只有該地址或其后的地址才可見-->
  <property name="cookiepath" value="/">
</bean>

四.基于url請(qǐng)求的國(guó)際化的實(shí)現(xiàn):

首先添加一個(gè)類,內(nèi)容如下:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
  }
 
}

然后把實(shí)現(xiàn)第二種方法時(shí)在項(xiàng)目的springservlet-config.xml文件中添加的

 

復(fù)制代碼 代碼如下:

<bean id="localeresolver" class="org.springframework.web.servlet.i18n.sessionlocaleresolver" />

 

注釋掉,并添加以下內(nèi)容:

 
?
1
 
<bean id="localeresolver" class="xx.xxx.xxx.myacceptheaderlocaleresolver"/>

“xx.xxx.xxx”是剛才添加的myacceptheaderlocaleresolver 類所在的包名。

保存之后就可以在請(qǐng)求的url后附上 locale=zh_cn 或 locale=en_us 如 http://xxxxxxxx?locale=zh_cn 來(lái)改變語(yǔ)言了,具體這里不再做演示了。

國(guó)際化部分的內(nèi)容到此結(jié)束。 

代碼下載:springmvci18n.rar

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/liukemng/p/3750117.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精国产品一区二区三区 | av电影在线网站 | 一日本道久久久精品国产 | 男女羞羞视频在线观看免费 | 一区在线视频 | 欧美a在线播放 | 成人免费观看毛片 | 国产欧美精品一区二区三区四区 | 中国美女一级黄色大片 | 久久久久久久久久久久久九 | 久久99亚洲精品 | 污视频在线免费 | 精精国产xxxx视频在线野外 | 91精品国产乱码久久久久久久久 | 无码专区aaaaaa免费视频 | 国产伦久视频免费观看视频 | 日韩黄色片在线观看 | 久久久久.com | 黄色免费影片 | 国产在线精品一区二区夜色 | 视频一区二区三区免费观看 | 一本到免费视频 | 最新在线中文字幕 | 国产精品久久久免费 | 欧美一级aa免费毛片 | 午夜伦情电午夜伦情电影 | 国产午夜精品久久久久婷 | 久久久精品视频网站 | 性少妇freeseⅹbbwhd | 91精品最新国内在线播放 | 国产精品国产三级国产aⅴ无密码 | chinese xxxx hd pron8 tube | 日韩视频高清 | 国产精品久久久久久久久久三级 | 国产精品久久久久久久久久东京 | 天天草天天爱 | 国产精品成人一区二区三区电影毛片 | 欧美视屏一区二区 | 日韩欧美精品电影 | 久久久www成人免费精品 | 欧美精品一区二区久久久 |