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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章