我们可以这样简单地理解MVC,C是controller,进行具体的处理,处理后得到的结果(数据)放入Model中,将Model传递到view,view具体负责向client呈现。

Spring mvc model/ModelAndView/JSP/Serverlet

Spring提供了很多View:

InternalResourceView:使用传统的jsp
JstlView:使用支持JSTL的jsp,JstView和InternalResourceView将Model的属性转换为request的属性,因此可以jsp中通过EL来获取model中的值。
FreeMarkerView:支持 FreeMarker模板yinq
VelocityView:支持Apache Velocity模板引擎
TilesView:支持Apache Tiles模板引擎
MappingJackson2JsonView:输出为json格式
MarshallingView:输出为XML格式
RedirectView:重定向,在HTTP1.1的303 See Other或者HTTP1.0的302 Found的Location header中给出重定向地址
 

Spring如何找到view:

如果controller返回View或者ModelAndView中还有View,则直接使用该view来进行渲染。
如果controller的方法返回String作为view名字,或者ModelAndView中的View是一个String,则Spring需要将该view的名字解析为真正的view,这个解析过程需要解析器,即ViewResolver,这是Spring FrameworkServlet中配置,及在dispacher中配置。
如果返回model或者model属性,则是通过请求的url翻译为view 名字,这是通过配置好的RequestToViewNameTranslator实现,再通过ViewResolver找到view。
如果返回一个response entity,则根据内容协商来找到相应的view。
 

相关文章: