zoukankan      html  css  js  c++  java
  • [笔记]《Spring实战》- 渲染Web视图

    一、理解解析

            Spring MVC定义了一个名为ViewResolver的接口,它大致如下所示:

    public interface ViewResolver {
        View resolverViewName(String viewName, Locale locale) throws Exception;
    }

            View是另外一个接口。

    public interface View {
        String getContentType();
        void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response) throws Exception;
    }

            View接口的任务就是接受模型以及Servlet的request和response对象,并将输出结果渲染到response中。

            我们需要做的就是编写ViewResolver和View的实现,将要渲染的内容放到response中,进而展现到用户的浏览器中。实际上,Spring提供了多个内置的实现。

    二、使用Thymeleaf

    1. 配置Thymeleaf视图解析器

            为了要在Spring中使用Thymeleaf,我们需要配置三个启用Thymeleaf与Spring集成的bean:

    • ThymeleafViewResolver:将逻辑视图名称解析为Thymeleaf模板视图;
    • SpringTemplateEngine:处理模板并渲染结果;
    • TemplateResolver:加载Thymeleaf模板。

            如下为声明这些bean的Java配置。

            Thymeleaf3 之前的版本:

    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        return viewResolver;
    }
    
    @Bean
    public TemplateEngine templateEngine(TemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }
    
    @Bean
    public TemplateResolver templateResolver() {
        TemplateResolver templateResolver = new ServletContextTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        return templateResolver;
    }

           thymeleaf3 版本:

    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        return viewResolver;
    }
    
    @Bean
    public TemplateEngine templateEngine(TemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }
    
    @Bean
    public ITemplateResolver templateResolver() {
        TemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        return templateResolver;
    }

            如果你更愿意使用XML来配置bean,那么如下的<bean>声明能够完成该任务。

    <bean id="viewResolver"
        class="org.thymeleaf.spring3.view.ThymeleafViewResolver"
        p:templateEngine-ref="templateEngine" />
    
    <bean id="templateEngine"
        class="org.thymeleaf.spring3.SpringTemplateEngine"
        p:templateResolver-ref="templateResolver" />
    
    <bean id="templateResolver"
        class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"
        p:prefix="/WEB-INF/templates"
        p:suffix=".html"
        p:templateMode="HTML5" />

    2. 定义Thymeleaf模板

            Thymeleaf在很大程度上就是HTML文件,与JSP不同,它没有什么特殊的标签或标签库。Thymeleaf之所以能够发挥作用,是因为它通过自定义的命名控件,为标准的HTML标签集合添加Thymeleaf属性。

  • 相关阅读:
    隐藏 MOSS 2007 页面版本工具栏
    用于显示原始XML形式的搜索结果的XSLT
    MOSS 2007 日志设置
    在布局页面“文章页面中”添加,自定义UserControl
    MOSS 2007 最简单的自定义搜索框 SearchBox
    Asp.net常用状态管理方案分析
    提高asp.net的性能的几种方法(转)
    VS2005下如何用预编译命令来发布站点
    asp.net控件设计时支持(1)
    解决Enterprise Library January 2006不能加密配置文件的方法(转)
  • 原文地址:https://www.cnblogs.com/SyMind/p/8978970.html
Copyright © 2011-2022 走看看