国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
SpringMVC學(xué)習(xí)系列(8) 之 國(guó)際化

在系列(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)容如下:

<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)容如下:

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)容如下:

<%@ 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 ="contentModel.money"></spring:eval><br/>    <spring:message code="date"/>:<br/>    <spring:eval ="contentModel.date"></spring:eval><br/>    </body></html>

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

更改瀏覽器語言順序,刷新頁面:

 

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

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

<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)容:

<%@ 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">中文</a> | <a href="test?langType=en">英文</a><br/>    下面展示的是后臺(tái)獲取的國(guó)際化信息:<br/>    ${money}<br/>    ${date}<br/>    下面展示的是視圖中直接綁定的國(guó)際化信息:<br/>    <spring:message code="money"/>:<br/>    <spring:eval ="contentModel.money"></spring:eval><br/>    <spring:message code="date"/>:<br/>    <spring:eval ="contentModel.date"></spring:eval><br/>    </body></html>

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

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è)試:

 

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

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

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

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

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver" />

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

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è)試:

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

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">    <!-- 設(shè)置cookieName名稱,可以根據(jù)名稱通過js來修改設(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)容如下:

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文件中添加的

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

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

<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 來改變語言了,具體這里不再做演示了。

 

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

 

代碼下載:http://pan.baidu.com/s/1bnlaOaj

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
The import org.springframework.web.servlet cannot be resolved
Java 接口和抽象類區(qū)別
spring security 3.1配置過程從簡(jiǎn)單到復(fù)雜詳細(xì)配置
跨域請(qǐng)求設(shè)置
druid數(shù)據(jù)庫連接池的配置類
spring3 MVC實(shí)戰(zhàn),手工搭建Spring3項(xiàng)目demo
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服