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:用户tom的blog资源。
— /forum/java:java论坛板块资源。
— /order/4321:订单号为4321的订单资源。
3.2 静态资源处理:原理
3.3 静态资源处理:如何配置?
第一步:web.xml让所有请求都由Spring MVC处理
物理静态资源路径 映射 逻辑资源路径
3.4 应用:文本框label字段国际化 如国际QQ等。