SpringMVC介绍之视图解析器ViewResolver.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SpringMVC介绍之视图解析器ViewResolver

SpringMVC视图解析器 前言    在前一篇博客中讲了SpringMVC的Controller控制器,在这篇博客中将接着介绍一 下SpringMVC视图解析器。当我们对SpringMVC控制的资源发起请求时,这些请求都会被 SpringMVC的DispatcherServlet处理,接着Spring会分析看哪一个HandlerMapping定义 的所有请求映射中存在对该请求的最合理的映射。然后通过该HandlerMapping取得其对 应的Handler,接着再通过相应的HandlerAdapter处理该Handler。HandlerAdapter在对 Handler进行处理之后会返回一个ModelAndView对象。在获得了ModelAndView对象之后, Spring就需要把该View渲染给用户,即返回给浏览器。在这个渲染的过程中,发挥作用 的就是ViewResolver和View。当Handler返回的ModelAndView中不包含真正的视图,只返 回一个逻辑视图名称的时候,ViewResolver就会把该逻辑视图名称解析为真正的视图 View对象。View是真正进行视图渲染,把结果返回给浏览器的。 ViewResolver和View介绍 SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的 主要作用是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对 象呈现给客户端的是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的 View对象。View接口的主要作用是用于处理视图,然后返回给客户端。 Spring为我们提供了非常多的视图解析器,下面将列举一些视图解析器。 AbstractCachingViewResolver:这是一个抽象类,这种视图解析器会把它曾经解 析过的视图保存起来,然后每次要解析视图的时候先从缓存里面找,如果找到了对应的 视图就直接返回,如果没有就创建一个新的视图对象,然后把它放到一个用于缓存的map 中,接着再把新建的视图返回。使用这种视图缓存的方式可以把解析视图的性能问题降 到最低。 UrlBasedViewResolver:它是对ViewResolver的一种简单实现,而且继承了 AbstractCachingViewResolver,主要就是提供的一种拼接URL的方式来解析视图,它可 以让我们通过prefix属性指定一个指定的前缀,通过suffix属性指定一个指定的后缀, 然后把返回的逻辑视图名称加上指定的前缀和后缀就是指定的视图URL了。如 prefix /WEB-INF/jsps/,suffix .jsp,返回的视图名称viewName test/indx, 则UrlBasedViewResolver解析出来的视图URL就是/WEB-INF/jsps/test/index.jsp。默认 的prefix和suffix都是空串。URLBasedViewResolver支持返回的视图名称中包 含redirect:前缀,这样就可以支持URL在客户端的跳转,如当返回的视图名称 是”redirect:test.do”的时候,URLBasedViewResolver发现返回的视图名称包 含”redirect:”前缀,于是把返回的视图名称前缀”redirect:”去掉,取后面的 test.do组成一个RedirectView,RedirectView中将把请求返回的模型属性组合成查询参 数的形式组合到redirect的URL后面,然后调用HttpServletResponse对象的 sendRedirect方法进行重定向。同样URLBasedViewResolver还支持forword:前缀,对于 视图名称中包含forword:前缀的视图名称将会被封装成一个InternalResourceView对 象,然后在服务器端利用RequestDispatcher的forword方式跳转到指定的地址。使 用UrlBasedViewResolver的时候必须指定属性viewClass,表示解析成哪种视图,一般使 用较多的就是InternalResourceView,利用它来展现jsp,但是当我们使用JSTL的时候我 们必须使用JstlView。下面是一段UrlBasedViewResolver的定义,根据该定义,当返回 的逻辑视图名称是test的时候,UrlBasedViewResolver将把逻辑视图名称加上定义好的 前缀和后缀,即 “/WEB-I

文档评论(0)

docman126 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档