视图定位器ViewResolver

      在 spring MVC中,当Controller将请求处理结果放入到ModelAndView中以后,DispatcherServlet会根据ModelAndView选择合适的视图进行渲染。那么在Spring MVC中是如何选择合适的View呢?View对象是是如何创建的呢?答案就在ViewResolver中,ViewResolver接口定义了resolverViewName方法,根据viewName创建合适类型的View实现。

    那么,如何配置ViewResolver呢?在Spring中,ViewResolver作为Spring Bean存在,可以在Spring配置文件中进行配置,例如下面的代码,配置了jsp相关的viewResolver。    

  1. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  2.         <property name="prefix" value="/WEB-INF/views/"/>  
  3.         <property name="suffix" value=".jsp"/>  
  4.     </bean> 

    ViewResolver接口是在DispatcherServlet中进行调用的,当DispatcherServlet调用完Controller后,会得到一个ModelAndView对象,然后DispatcherServlet会调用render方法进行视图渲染。

    在这里需要关于ViewResolver的选择是通过循环进行的,只选择第一个符合要求的,因此在定义ViewResolver时,需要注意定义其优先级。

    下面就来着重关注一下ViewResolver的类结构。

               http://hi.csdn.net/attachment/201009/17/0_12847053098WtX.gif

       关于View对象的创建,不同的ViewResolver的解决方法是各部相同的。如BeanNameViewResolver是根据viewName选择相应名称的bean(这里需要注意bean的scope,是否需要线程安全),而UrlBasedViewResolver则是使用反射机制,根据viewClass信息创建view对象,因此这个view不受IoC容器的管理。ContentNegotiationViewResolver中可以嵌套ViewResolver,根据不同的的请求类型选择合适的ViewResolver。

       DispatcherServlet得到View对象后,即调用View的render方法,执行真正的渲染工作。

       最后,看一下View的类结构图

           http://hi.csdn.net/attachment/201009/17/0_1284708927eRRZ.gif

      所有的We MVC框架都有一套它自己的解析视图的机制,spring MVC也不例外,它使用ViewResolver进行视图解析,让用户在浏览器中渲染模型。ViewResolver是一种开箱即用的技术,能够解析JSP、Velocity模板和XSLT等多种视图。


    Spring处理视图最重要的两个接口是ViewResolver和View。ViewResolver接口在视图名称和真正的视图之间提供映射; 而View接口则处理请求将真正的视图呈现给用户。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值