Spring : 视图解析Viewresol和View
来源:互联网 发布:网络安全设备有哪些 编辑:程序博客网 时间:2024/06/10 16:18
Spring MVC使用ViewResolver来根据controller中返回的view名关联到具体的View对象。使用View对象来渲染返回值以生成最终的
视图,如html,json或pdf等。
Spring MVC中,通过在servlet context配置文件中配置的ViewResolver Bean对象来注册ViewResolver对象,其在spring mvc的
dispatcherServlet中的使用过程其实和之前提到的HandlerMapping和HanderAdapter类似。
DispatcherServlet初始化时,首先根据当前context中注册的Beans中实现了ViewResolver接口的Bean列表来生成ViewResolver对
象列表,并根据这些ViewResolver中的order属性进行排序,如果没配置order属性则此ViewResolver的优先级最低。
当HandlerAdapter调用完毕handler method返回view对象时,dispatcherServlet将根据当前已经注册了的ViewResolver列表的顺序
去调用其中的resolveViewName方法,以根据viewName找到实际对应的View对象,并根据第一个返回的View对象中的render方法来生
成最终的用户视图。
与HandlerMapping和HanderAdapter类似,DispatcherServlet也提供了参数来允许用户指定是否只加载自己的ViewResolver,当属性detectAllViewResolvers设置为false时,则spring mvc将查找名为viewResolver的bean 来作为当前唯一的ViewResolver。
<init-param> <param-name>detectAllViewResolvers</param-name> <param-value>false</param-value> </init-param>
UrlBasedViewResolver与InternalResourceViewResolver
之前的例子中,为将返回的viewname映射到对应的jsp上,在servlet context 配置文件中是这么定义的
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
这个定义的含义是指UrlBasedViewResolver将使用JstlView对象来渲染结果,并将handler method返回的modelAndView基础上,加上
目录前缀/WEB-INF/jsp/和文件名称后缀.jsp。例如结果返回的viewName为helloworld,则对应的实际jsp为/WEB-INF/jsp/helloworld.jsp
当返回的viewName的前缀为forward:时,spring mvc将结果通过forward的方式转到对应的视图,例如forward:helloworld。这也是
spring mvc缺省的使用模式。
当返回的viewName的前缀为redirect:时,spring mvc将结果通过redirect的方式转到对应的视图。例如redirect:helloworld
InternalResourceViewResolver为UrlBasedViewResolver的子类,它将InternalResourceView作为缺省的View类,如果当前classpath中有jstl的jar包时则使用JstlView作为缺省的view来渲染结果。因此以下使用InternalResourceViewResolver的定义应该和之前使用UrlBasedViewResolver定义的viewresolver的作用相同。
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
除此之外,InternalResourceViewResolver还提供了
alwaysInclude属性来要求返回的结果使用include方式而不是forward方式
exposeContextBeansAsAttributes属性以将当前spring 环境中的 beans作为request attritbutes来暴露到页面上。
exposedContextBeanNames属性来限制能够暴露到页面上的spring bean的名称列表。
转自:http://www.cnblogs.com/crazy-fox/archive/2012/02/18/2357675.html
- Spring : 视图解析Viewresol和View
- Spring MVC 学习笔记 Viewresol和View
- Spring MVC 学习笔记 Viewresol和View
- Spring MVC 学习笔记 Viewresol和View
- Spring MVC 学习笔记 四 Viewresol和View
- Spring:SpringMVC 视图解析 - ViewResolver&View
- 自定义Spring 视图和视图解析器
- spring 视图和视图解析器
- Spring 视图和视图解析器简介
- view视图解析器解析
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- 开发 Spring 自定义视图和视图解析器
- Spring Web MVC框架(四) 视图和视图解析
- 关于 Dead Connection Detection, Resource Limits, V$SESSION, V$PROCESS and OS processes ( 601605.1)
- 做B/S网站实现需要统一的地方
- Android:用MediaPlayer播放byte数组中的音频
- 拖拽gridview,及时交换位置
- -----------qt-----------C++的模板的使用, ---定义一个模块类--------
- Spring : 视图解析Viewresol和View
- SWT可交互式Browser控件
- C#常用42个操作类
- jquery的基础学习
- 下载Android4.4源码
- 将网络解析的图片数组放入scrollview中
- 如何用一个WP函数重新定义图片的宽高
- 机器学习—介绍
- JavaScript window.document的属性、方法和事件小结