免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2308 | 回复: 0
打印 上一主题 下一主题

Spring MVC 学习笔记 四 Viewresol和View [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-05-30 12:35 |只看该作者 |倒序浏览
Spring MVC 学习笔记 四 Viewresol和View


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。



Xml代码
  1.       <init-param>
  2.             <param-name>detectAllViewResolvers</param-name>
  3.             <param-value>false</param-value>
  4.         </init-param>  
复制代码
UrlBasedViewResolver与InternalResourceViewResolver

之前的例子中,为将返回的viewname映射到对应的jsp上,在servlet context 配置文件中是这么定义的


Xml代码
  1.   <bean id="viewResolver"
  2.        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
  3.        <property name="viewClass"
  4.            value="org.springframework.web.servlet.view.JstlView" />
  5.        <property name="prefix" value="/WEB-INF/jsp/" />
  6.        <property name="suffix" value=".jsp" />
  7.    </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的作用相同。


Xml代码
  1.   <bean id="viewResolver"
  2.        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  3.        <property name="prefix" value="/WEB-INF/jsp/" />
  4.        <property name="suffix" value=".jsp" />
  5.    </bean>
复制代码
除此之外,InternalResourceViewResolver还提供了

alwaysInclude属性来要求返回的结果使用include方式而不是forward方式

exposeContextBeansAsAttributes属性以将当前spring 环境中的 beans作为request   attritbutes来暴露到页面上。

exposedContextBeanNames属性来限制能够暴露到页面上的spring bean的名称列表。

0
顶0
踩.Spring MVC 学习笔记 五 controller与re ... | Spring MVC 学习笔记 三 handlerMapping ... 20:34浏览 (7)评论 (0)分类: spring mvc相关推荐评论发表评论

表情图标
字体颜色: 标准深红红色橙色棕色黄色绿色橄榄青色蓝色深蓝靛蓝紫色灰色白色黑色 字体大小: 标准1 (xx-small)2 (x-small)3 (small)4 (medium)5 (large)6 (x-large)7 (xx-large) 对齐: 标准居左居中居右
提示:选择您需要装饰的文字, 按上列按钮即可添加上相应的标签.您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP