资讯专栏INFORMATION COLUMN

SpringMVC之ViewResolver(三)

Julylovin / 1434人阅读

摘要:配置视图解析器所采取的方式会在视图名上加上前缀和后缀,进而确定一个应用中得视图资源和物理路径。

SpringMVC之ViewResolver(三)
前言:在MVC架构中大家都知道Model、View 和 Controller,然而在我以前的理解中视图层就是展示数据给用户,给用户提供数据输入的终端,然而View做的事远不止这么多, 以springMVC为例, View还做了视图解析的事情, 将视图模板解析为相应的视图, 还要对视图进行渲染,虽然说出来只有一句话,可是后面做的事情可不止一点半点。其实这归结为View应该做的事情也不难理解,因为Controller在完成了视图名的定位之后控制层的工作已经完成了,而模型层并不参与业务流程的处理, 那么剩下的工作自然都属于视图层了。
配置jsp视图解析器

InternalResourceViewResolver所采取的方式会在视图名上加上前缀和后缀,进而确定一个web应用中得视图资源和物理路径。
因为WEB-INF路径下的资源在客户端是不能访问的,所以通常的实践是将jsp文件放到/WEB-INF/views/目录下, 避免客户端对其直接访问, 这样就只需要配置前缀和后缀名,就可以找到相应的视图了, 例如以下代码:

 @Bean
    public ViewResolver viewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("WEB-INF/views/");
        resolver.setPrefix(".jsp");
        return resolver;
    }

当控制器中返回的是 index 的时候, 这时它就会将视图名解析为jsp文件,它会去/WEB-INF/views/index.jsp, 控制器中返回的是books/detail 的时候将会被解析为/WEB-INF/views/books/detail.jsp,这时我们就可以很方便的组织目录结构了。

配置特殊的视图解析器

当控制器将模型数据打包之后,它接下来将数据模型返回给视图输出, 并跳转页面,但是在这里为了将控制器与视图解耦,所以Controller甚至不知道数据返回的视图不是jsp或者是其他别的格式,只返回一个视图名,那么后续的工作就应该由视图解析器来做了。例如:

public class ExcelView extends AbstractXlsxView {

    @Override
    protected void buildExcelDocument(
            Map map, Workbook workbook,
            HttpServletRequest httpServletRequest,
            HttpServletResponse httpServletResponse) throws Exception {
        workbook.write(httpServletResponse.getOutputStream());
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70934.html

相关文章

  • SpringMVC源码分析--ViewResolver

    摘要:概述本节学习下的功能,简单来说,该类的作用就是把多个视图解析器进行组装,内部使用存储配置使用的视图解析器。总结本章介绍了类,根据测试,了解到属性不影响中配置使用的视图解析器顺序。 概述 本节学习下ViewResolverComposite的功能,简单来说,该类的作用就是把多个ViewResolver视图解析器进行组装,内部使用list存储配置使用的视图解析器。 本系列文章是基于Spri...

    fox_soyoung 评论0 收藏0
  • SpringMVC源码分析--ViewResolver(六)

    摘要:与一样,该类继承抽象类,并且通过外部的属性文件定义逻辑视图名称与真正的视图对象的关系,属性文件默认是下的,可以通过或属性来指定,该属性指的是文件的基名称,也就是说以属性值开头的属性文件。 概述 本章再学习另外两个ViewResolver,分别是XmlViewResolver和ResourceBundleViewResolver,从功能上说,这两个视图解析器都是从外部资源文件中查找视图V...

    alighters 评论0 收藏0
  • SpringMVC源码分析--ViewResolver(二)

    摘要:概述上篇学习了视图解析器作用及处理流程,为我们提供了丰富的视图解析器见下图本系列文章是基于。该视图解析器是根据处理器返回的逻辑视图名称,在应用上下文中查找该名称的视图对象视图对象就是的对象。 概述 上篇学习了Spring MVC ViewResolver视图解析器作用及处理流程,Spring为我们提供了丰富的视图解析器(见下图):showImg(https://segmentfault...

    jas0n 评论0 收藏0
  • SpringMVC源码分析--ViewResolver(一)

    摘要:概述本章开始进入另一重要的组件,即视图组件,处理视图组件使用两个主要的接口是和。接口的作用是用于处理视图进行渲染。延用之前的介绍流程,本章分两部分进行阐述启动初始化和请求处理。 概述 本章开始进入另一重要的组件,即视图组件,Spring MVC处理视图组件使用两个主要的接口是ViewResolver和View。根据名称可知,ViewResolver即视图解析器,其作用是把逻辑视图名称解...

    pf_miles 评论0 收藏0
  • SpringMVC源码分析--ViewResolver(四)

    摘要:概述本章继续学习另一个实现类解析器,该类的主要作用是根据同一请求的某些策略,选择对应的进行渲染。可以把理解为适配器,对不同类型进行适配。值得注意的是处理的为同一个。本系列文章是基于。实战需求目标实现后缀名或参数控制,显示不同的视图。 概述 本章继续学习ViewResolver另一个实现类ContentNegotiatingViewResolver解析器,该类的主要作用是根据同一请求的某...

    jcc 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<