SpringMVC之ViewResolver(三)

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<String, Object> map, Workbook workbook,
            HttpServletRequest httpServletRequest,
            HttpServletResponse httpServletResponse) throws Exception {
        workbook.write(httpServletResponse.getOutputStream());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值