在Spring Mvc中使用不同的ViewResolver

Man*_*ish 4 spring view spring-mvc

我是spring-mvc的初学者.在浏览解析器时,我能够理解如何使用以下视图解析器:

BeanNameViewResolver,InternalResourceViewResolver和UrlBasedViewResolver

我已经通过谷歌了解但仍然不清楚他们的利弊相互之间.

如何决定何时使用哪个视图解析器.

如果有人可以帮助我理解这一点,那将是一个很大的帮助.

谢谢,

Ral*_*lph 7

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注释支持开始,这个解析器很少使用.