一、历史回顾
(一)、ModelAndView

二、视图、视图解析器、国际化
(一)、视图(View)、视图解析器、国际化
1、View接口(视图)
View接口是视图的顶级接口
实现该接口的实现类比较多,这里特别讲解几个,如下图所示:

2、ViewResolver接口(视图解析器)
实现该接口的实现类比较多,这里特别讲解几个,如下图所示:

3、常见的视图和解析器
常用的视图和解析器是:InternalResourceView、InternalResourceViewResolver。InternalResourceViewResolver把Controller返回的字符串加前缀和后缀,把这个字符串渲染成JSP所对应的页面。InternalResourceView还有一个子类是JstlView,它可以解析Jstl标签,可以实现国际化操作。springMVC解析JSP时会默认使用InteralResourceView,如果发现JSP中包含了jstl语言,则自动转为JstlView。
验证:如果发现JSP中包含了jstl语言,则自动转为JstlView去解析。通过打断点的方式,在InternalResourceViewResolver.class ---> buildView方法中断点查看返回的视图的内容
4、国际化
JstlView可以解析Jstl标签,可以实现国际化操作。
国际化:针对不同地区、不同国家,进行不同的显示。
(1)、具体实现国际化步骤:
a、创建资源文件
基名_语言.properties。这个不管什么国家都可以。
基名_语言_国家.properties。例:base_en_US.properties、i18n_zh_CN.properties。如下图所示:

注意:“.properties”文件里面的内容都是key-value对,具体内容如例:welcome=欢迎。如果没有在“base_zh_CN.properties”文件中找到,那就去“base.properties”文件寻找。这里的value如果是中文的话,一定要转成ASCII码。
b、配置springmvc.xml,加载资源文件:
ResourceBundleMessageSource会在springMVC响应程序时候介入解析国际化资源文件。并且这个bean的id一定要是“messageSource”值。如下图所示:

c、通过jstl使用国际化
使用两个jar包:jstl.jar、standar.jar。
注意:直接通过地址栏访问对应拥有国际化标签的JSP页面是不可以的,它需要通过springMVC的ResourceBundleMessageSource来处理响应处理标签中的国际化标签。
例:(国际化)
引入两个jar包:

资源文件:

注意:如果是中文内容的资源文件,那内容中是中文需要转成ASCII码。
springmvc.xml文件配置:

注意:这里的id一定要是“messageSource”,通过阅读源代码可以查看到。
请求页面(index.jsp):一定要通过请求的方式来通过springMVC的方式才能走国际化

Controller处理请求:

响应页面(success.jsp):

网友评论