Web 视图渲染

视图解析

ViewResolver接口

public interface ViewResolver {

    View resolveViewName(String viewName, Locale locale) throws Exception;

}

View接口

public interface View {

    @Nullable
    default String getContentType() {
        return null;
    }


    void render(@Nullable Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
            throws Exception;

}

视图解析器的工作原理很简单,外部会传给视图解析器一个视图名和地区对象, 解析两个参数返回一个视图。 视图做的工作就是根据外部传入的模型,来渲染出html页面,使用 并使用 HttpServletResponse 输出到前端。

Spring 提供的视图解析器

视图解析器 说明
AbstractCachingViewResolver 会对解析的View对象缓存 以提高性能
UrlBasedViewResolver 会对redirect:、forward:等特殊的url特殊处理,并将请求转发给子类实现,返回具体视图
InternalResourceViewResolver 继承了 UrlBasedViewResolver,可以用来访问内部资源,比如jsp等待
FreeMarkerViewResolver 用来支持FreeMarker模板
ContentNegotiatingViewResolver 用来支持HTTP的内容协商功能
BeanNameViewResolver 一种极为灵活的视图解析方式,直接通过 Spring 中的容器 Bean 名称来获取视图

创建JSP视图

使用 Thymeleaf

三个与spring集成的bean

响应

静态资源配置

    <!--配置静态资源过滤-->
    <mvc:resources mapping="/js/**" location="/js/"/>

响应json

@ResponseBody