文档章节

使用ViewResolver接口处理视图

JettyWag
 JettyWag
发布于 2016/09/11 18:14
字数 703
阅读 73
收藏 0

    讲述过的实现控制器这一章节,在Spring MVC中的所有的handler方法必须显式(返回一个字符串,View或者ModelView)或者隐式(基于协议)的处理逻辑视图名在SpringMVC中的视图通过一个逻辑视图名被视图解析器处理。Spring提出了很多的视图解析器。
    下面表格是视图解析器的一组例子。

ViewResolver 描述
AbstractCachingViewResolver AbstractCachingViewResolver缓存视图,通常视图在使用之前需要准备,可以扩展这个视图解析器可以提供缓存。
XmlViewResolver

ViewResolver的一个实现类,可以接收一个和Spring XML bean工厂有相同DTD的XML配置文件,默认配置文件是/WEB-INF/views.xml

ResourceBundleViewResolver ViewResolver的一个实现类,,可以使用bean定义一个ResourceBundle,通过 bundle base name指定通常你可以在properties文件下定义bundle,然后在classpath下加载,默认名称为view.properties
UrlBasedViewResolver ViewResolver接口的简单实现类。直接通过逻辑视图名到URL,不需要映射定义。这非常合适逻辑视图名直接和视图资源匹配不需要任何映射。
InternalResourceViewResolver UrlBasedViewResolver的子类,支InternalResourceView(Servlets,JSPS)
和像JstlVIew和TilesView等子类你可以为所有的视图指定视图类通过使用SetViewCLass衍生。可以查看UrlBasedViewResolver javadocs
InternalResourceViewResolver
InternalResourceViewResolver UrlBasedViewResolver的子类分别支持VelocityView (Velocity templates) or FreeMarkerView和它们的自定义子类
ContentNegotiatingViewResolver

ViewResolver 的实现类,解决基于请求文件名称和接收头的视图。

    你可以使用JSP作为视图技术学习,使用UrlBasedViewResolver这个解析器翻译一个是与名到URL,并且将请求交给RequestDispatcher 去渲染视图。

   

<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>

    当返回一份test作为逻辑视图名称,视图解析器就会转发请求到RequestDispatcher,竟会发送请求到/WEB-INF/jsp/test.jsp.
    如果想在web应用结合两种不同的视图技术可以使用ResourceBundleViewResolver

<bean id="viewResolver"
        class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
    <property name="basename" value="views"/>
    <property name="defaultParentView" value="parentView"/>
</bean>

     ResourceBundleViewResolver检查通过basename确认的ResourceBundle,并且去解析它支持的任意一个视图。它使用属性viewname.class的值当成视图类,viewnmae.url的值作为视图的url.你可以从所有的扩展properties文件的视图中指定一个父视图,通过这种方法你可以制定一个默认视图。

    比如AbstractCachingViewResolver的子类可以缓存它们处理的视图,缓存可以提升某种视图技术的性能,但是也可以关闭缓存通过设置cache属性为false;此外你也可以刷新某些视图在运行期间,比如 Velocity template 在修改,你可以使用removeFromCache(String viewName, Locale loc)方法。

© 著作权归作者所有

JettyWag

JettyWag

粉丝 1
博文 47
码字总数 35855
作品 0
杭州
后端工程师
私信 提问
SpringMVC中视图解析器的优先级

在SpringMVC中可以同时定义多个ViewResolver视图解析器,然后它们会组成一个ViewResolver链。当Controller处理器方法返回一个逻辑视图名称后,ViewResolver链将根据其中ViewResolver的优先级...

岁月留痕
2015/12/12
1K
0
Spring视图的处理

所有基于Web应用程序的MVC框架都提供了一种机制去处理视图,Spring 提供了视图解析器,它允许你在一个浏览器渲染模型而不是让你使用一种特定的视图技术比如:Spring允许你使用JSP,Velocity模...

JettyWag
2016/09/04
10
0
Spring MVC学习笔记(六)

所有的MVC框架都为web应用提供定位views。Spring提供view解析器,不限定具体的view技术,将models渲染到浏览器。 有两个重要的接口ViewResolver和View。ViewResolver提供view名称与实际views...

第五郎
2014/03/26
113
0
springmvc框架

1、springmvc简介 1.1、mvc架构 MVC 是一种著名的设计模式,特别是在 Web 应用程序领域。模式全都是关于将包含业务数据的模块与显示模块的视图解耦的。这是怎样发生的?视图(例如,JSP 页面...

赵越西
2016/12/11
48
0
springmvc处理流程详解

一、首先了解springMVC的组件定义及用途 1.DisPatcherServlet:前端控制器(不需要程序员开发) 用户请求到达前端控制器,它相当于MVC模式中的C(Controller),DispatcherServlet是整个流程...

J星星点灯
2017/09/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
9
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部