SpringMVC國際化

SpringMVC國際化

目標: SpringMvc視圖解析  SpringMvc本地化 SpringMvc靜態資源處理

前言

  當我們對SpringMVC控制的資源發起請求時,這些請求都會被SpringMVC的DispatcherServlet處理,接着Spring會分析看哪一個HandlerMapping定義的所有請求映射中存在對該請求的最合理的映射。然後通過該HandlerMapping取得其對應的Handler,接着再通過相應的HandlerAdapter處理該Handler。HandlerAdapter在對Handler進行處理之後會返回一個ModelAndView對象。在獲得了ModelAndView對象之後,Spring就需要把該View渲染給用戶,即返回給瀏覽器。在這個渲染的過程中,發揮作用的就是ViewResolver和View。當Handler返回的ModelAndView中不包含真正的視圖,只返回一個邏輯視圖名稱的時候,ViewResolver就會把該邏輯視圖名稱解析爲真正的視圖View對象。View是真正進行視圖渲染,把結果返回給瀏覽器的。

 

1. Spring MVC如何解析視圖

【視圖解析 就是加前綴、後綴】

a) 請求處理方法返回值類型

b) 不論控制器返回一個String,ModelAndView,View都會轉換爲ModelAndView對象,由視圖解析器解析視圖,然後,進行頁面的跳轉。

c) 

 

d)  <!-- 視圖解析配置 -->

e) <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

f) <property name="prefix" value="/"></property>

g) <property name="suffix" value=".jsp"></property>

h) </bean>

 

2. 國際化(本地化)

      一般情況下,Web應用根據客戶端瀏覽器的設置判斷客戶端的本地化類型,用戶可以通過IE菜單:工具→Internet選項...→語言...在打開的“語言首選項”對話框中選擇本地化類型。

       瀏覽器中設置的本地化類型會包含在HTML請求報文頭中發送給Web服務器,確切地說是通過報文頭的Accept-Language參數將“語言首選項”對話框中選擇的語言發送到服務器,成爲服務器判別客戶端本地化類型的依據。

2.1 本地化:Spring MVC的本地化解析器

—  AcceptHeaderLocaleResolver:根據HTTP報文頭的Accept-Language參數確定本地化類型,如果沒有顯式定義本地化解析器,Spring MVC默認採用AcceptHeader- LocaleResolver

CookieLocaleResolver:根據指定Cookie值確定本地化類型。

SessionLocaleResolver:根據Session中特定的屬性值確定本地化類型。

LocaleChangeInterceptor:從請求參數中獲取本次請求對應的本地化類型。

2.2 LocaleChangeInterceptor:通過URL參數指定

    很多國際型的網站都允許通過一個請求參數控制網站的本地化,如www.xxx.com? locale=zh_CN返回對應中國大陸的本地化網頁,而www.xxx.com?locale=en返回本地化爲英語的網頁。這樣,網站使用者可以通過URL的控制返回不同本地化的頁面,非常靈活。

 

 


 

自己玩:

<!-- 注意一定使用messageSource作爲bean的名稱 首字母小寫 -->

<!-- 國際化配置 -->

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">

<property name="basename" value="/cn/et/springmvc/lesson04/resource/my"></property>

</bean>

 

<!-- 自定義驗證器 手工注入國際化 -->

<bean id="localValidatorFactoryBean" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">

<property name="validationMessageSource" ref="messageSource"></property>

</bean>

3. 靜態資源處理

Spring MVC 3.0提供的最強大的功能之一!!!

1. 靜態資源處理方式 2.靜態資源映射

3.1 靜態資源處理:使REST風格的URL成爲實現

優雅REST風格的資源URL不希望帶.html.do等後綴,

以下是幾個優雅的URL

/blog/tom:用戶tomblog資源。

/forum/javajava論壇板塊資源。

/order/4321:訂單號爲4321的訂單資源。

3.2 靜態資源處理:原理

 

3.3 靜態資源處理:如何配置?

第一步:web.xml讓所有請求都由Spring MVC處理

 

物理靜態資源路徑 映射 邏輯資源路徑

 

3.4 應用:文本框label字段國際化 如國際QQ等。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發佈了40 篇原創文章 · 獲贊 33 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章