14.Web视图
在前面说Spring MVC请求流程的时候,提到需要将数据模型填充到对应的视图中,并且匹配到特定的视图需要由视图解析器来解析和渲染视图,然后以view的形式返回到客户端,呈现出用户希望看到的形式。
接着看一下View Resolver和View的定义:
文章图片
ViewResolver接口
当给resolveViewName方法传递一个视图名和Locale对象时,他会返回一个View的实例。
文章图片
View
View接口接收模型以及servlet的request和response对象,并将输出结果渲染到response中。
InternalResourceViewer类的定义:
文章图片
InternalResourceViewResolver.png
下面是JstlView类,如果我们在JSP使用了JSTL标签,那么InternalResourceViewResolver会将视图名解析为JstlView形式的JSP文件,从而将JSTL本地化和资源bundle变量暴露给JSTL格式化和信息标签。JtslView的具体定义:
文章图片
JstlView类.png 配置InternalResourceViewResolver的方式
(1)Java代码实现
文章图片
Java方式实现配置InternalResourceViewResolver.png
(2)XML形式实现
文章图片
Xml形式配置IntervalResourceViewResolver.png 【14.Web视图】ResourceBoundleMessageSource类
它会从一个属性文件中加载信息,这个属性文件的名称是根据基础名称来的。它会试图在根路径的属性文件中解析信息,这些属性文件的名称是根据这个基础名称衍生得到的。
ReloadableResourceBoundleMessageSource类
该类可以重新加载信息属性,不必重新编译或者重启应用。
两者的区别在于basename属性设置为在应用的外部查找,ResourceBoundleMessageSource是在类路劲下查找。basename属性可以设置为在类路径下(以classpath:为前缀),或者文件系统中(以file:为前缀)或者在Web应用的根路径下查找属性。
推荐阅读
- tableView|tableView 头视图下拉放大 重写
- mysql中视图事务索引与权限管理
- 写在前面的话
- (2018-05-12.Python从Zero到One)6、(Django)Django视图__1.3.2定义视图
- New|New year's resolution | to 2018
- 跳跃的历史(1)
- AMD规范之require.js
- node 与 ts-node
- Windows安装Docker
- mysql视图简介与使用