我是spring-mvc的初学者.在浏览解析器时,我能够理解如何使用以下视图解析器:
BeanNameViewResolver,InternalResourceViewResolver和UrlBasedViewResolver
我已经通过谷歌了解但仍然不清楚他们的利弊相互之间.
如何决定何时使用哪个视图解析器.
如果有人可以帮助我理解这一点,那将是一个很大的帮助.
谢谢,
InternalResourceViewResolver
是.的子类UrlBasedViewResolver
.
UrlBasedViewResolver
并且InternalResourceViewResolver
经常在MVC应用程序中使用,其中控制器返回应该呈现的视图的名称.控制器返回视图的逻辑名称,解析器通过添加一些前缀和后缀使其成为(jsp的)文件名.例如:控制器返回的逻辑视图名称:main/example
,prefix:/WEB-INF/pages/
,postfix:.jsp
- > /WEB-INF/pages/main/example.jsp
使用控制器提供的模型数据进行渲染
该UrlBasedViewResolver
需求View
类(像大多数其他ViewResolvers太).(非常简洁:视图类负责渲染,而解析器负责选择正确的模板/ ...)使用的视图UrlBasedViewResolver
必须是子类AbstractUrlBasedView
.
的InternalResourceViewResolver
是方便的子类UrlBasedViewResolver
,其具有是默认已配置的视图:InternalResourceView
(或者JstlView
当jstl的存在).因此,当JSP用作模板引擎时,它是正确的解析器.
还有其他AbstractUrlBasedView
实现,例如JasperReports,Freemaker,Velocity,Tiles,......其中大多数也有一个方便的子类UrlBasedViewResolver
.
BeanNameViewResolver
非常老的解析器,从旧的2.0春季时间开始.此时每个控制器都用于处理一个URL.此时没有@RequestMapping
注释,并且必须告诉Spring哪个控制器是哪个url.人们可以列出所有,或者有这个解析器,它能够通过控制器名称映射url-> controller.从Spring 3.0(更精确的自2.5)和Springs注释支持开始,这个解析器很少使用.