在前面说Spring MVC请求流程的时候,提到需要将数据模型填充到对应的视图中,并且匹配到特定的视图需要由视图解析器来解析和渲染视图,然后以view的形式返回到客户端,呈现出用户希望看到的形式。
接着看一下View Resolver和View的定义:

当给resolveViewName方法传递一个视图名和Locale对象时,他会返回一个View的实例。

View接口接收模型以及servlet的request和response对象,并将输出结果渲染到response中。
InternalResourceViewer类的定义:

下面是JstlView类,如果我们在JSP使用了JSTL标签,那么InternalResourceViewResolver会将视图名解析为JstlView形式的JSP文件,从而将JSTL本地化和资源bundle变量暴露给JSTL格式化和信息标签。JtslView的具体定义:

配置InternalResourceViewResolver的方式
(1)Java代码实现

(2)XML形式实现

ResourceBoundleMessageSource类
它会从一个属性文件中加载信息,这个属性文件的名称是根据基础名称来的。它会试图在根路径的属性文件中解析信息,这些属性文件的名称是根据这个基础名称衍生得到的。
ReloadableResourceBoundleMessageSource类
该类可以重新加载信息属性,不必重新编译或者重启应用。
两者的区别在于basename属性设置为在应用的外部查找,ResourceBoundleMessageSource是在类路劲下查找。basename属性可以设置为在类路径下(以classpath:为前缀),或者文件系统中(以file:为前缀)或者在Web应用的根路径下查找属性。
网友评论