SpringMVC学习笔记8-----使用自定义视图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38016931/article/details/81749921

之前使用markdown在csdn上写博客虽然方便,但是存在一个我认为是缺陷而且感觉致命的非常不人性化的东西,不能直接贴图,要先保存下来qq截屏的图片,然后再上传进来,完全没有之前的ctrl + v简单!而且代码片段也没这边的好看,综合两点,我还是放弃了在这边使用markdown写博客的方式!

一、为什么要自定义视图

SpringMVC要整合excel等视图必须通过自定义视图来完成的

二、如何使用自定义视图

1.我们通过继承或实现来构建自定义视图,这里我们先创建一个实现

org.springframework.web.servlet.View

的测试类 DIYView:

package cn.jxufe.view;

@Component(value = "DIYView")
public class DIYView implements View {
    @Override
    public String getContentType() {
        return "text/html";
    }

    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.getWriter().write("hello DIYView  " + new Date());
    }
}

为什么要加个@Component,下面讲到。

2. 创建了视图,我们要配置一个beanNameViewResolver来通过视图名称解析这个视图!

<!--配置能够根据类名来解析视图的解析器BeanNameViewResolver-->
<bean name="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
    <property name="order" value="100"> </property>
</bean>

这个视图解析器是如何通过视图类名来解析视图的呢?

按住ctrl点击BeanNameViewResolver查看源码:

context.getBean(viewName, view.class),可以看出这个视图类对象是spring在系统在服务器初始化时放进context域中的。是运用spring的功能,所以前面我们要在试图类那里加上@Component,这样spring才会创建在context中的视图类对象!

3.在index.jsp中加上访问这个自定义视图的超链接已经在控制器上加上映射方法:

<a href="/testDIYView">测试自定义视图</a>
    @RequestMapping(value = "/testDIYView")
    public String testDIYView() {
        return "DIYView";
    }

运行后点击这个超链接,运行效果如图:

三、视图解析器中order属性

在一个SpringMVC程序中,可能存在多个视图解析器,那么一个逻辑视图如何决定先由哪个来解析呢,这就需要order来决定视图解析器的先后顺序,order越小优先级越高。在这边我们将此解析器设置成了100,那internalResourceViewResolver的order是多少呢?

ctrl 点击internalResourceViewResolver

ctrl 点击UrlBasedViewResolver:

可以看到internalResourceViewResolver的order是Integer.MAX_VALUE,所以这个解析器是肯定是最后解析的!

四、其他类型视图

连按三次shift搜索:

我们只要实现这个类中的

这个方法即可创建excle视图!

猜你喜欢

转载自blog.csdn.net/qq_38016931/article/details/81749921