Spring in Acton 4读书笔记之使用Thymeleaf

心已赠人 2022-09-10 05:14 217阅读 0赞

JSP的缺陷

尽管JSP历史悠久、应用广泛,但它有以下缺陷:

  • 尽管看起来像,但既不是HTML,也不是XML
  • JSP标签库使文档格式不友好
  • 如果JSP标签没有在服务端正确编译后发给浏览器,浏览器由于不理解JSP标签,渲染的结果是一个灾难
  • JSP标准和servlet耦合,所以JSP只能用于基于servlet的web应用视图。像email或者不基于servlet的web应用就无法使用JSP

由于JSP有以上缺陷,许多模板试图取代JSP,而其中Thymeleaf是一个令人兴奋的选择。Thymeleaf自然,不依赖于标签库。可以在任何欢迎HTML的地方编辑和渲染。并且由于不依赖于servlet标准,所以使用范围比JSP广。

如何配置Thymeleaf视图解析器

要在Spring中使用Thymeleaf,需要配置以下三个bean,以集成Thymeleaf和Spring:

  • ThymeleafViewResolver根据视图逻辑名称解析视图模板
  • SpringTemplateEngine处理模板并渲染结果
  • TemplateResolver加载Thymeleaf模板

    @Bean
    public ViewResolver viewResolver(

    1. SpringTemplateEngine templateEngine) {
    2. ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    3. viewResolver.setTemplateEngine(templateEngine);
    4. return viewResolver;

    }

    @Bean
    public TemplateEngine templateEngine(
     TemplateResolver templateResolver) {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver);
    return templateEngine;
    }

    @Bean
    public TemplateResolver templateResolver() {
    TemplateResolver templateResolver =

    1. new ServletContextTemplateResolver();

    templateResolver.setPrefix(“/WEB-INF/templates/“);
    templateResolver.setSuffix(“.html”);
    templateResolver.setTemplateMode(“HTML5”);
    return templateResolver;
    }

通过以上配置,Spring MVC的controller返回的response中的视图将使用Thymeleaf解析。ThymeleafViewResolver实现了Spring MVC的ViewResolver接口,用来根据解析视图的逻辑名称,并且解析视图。

ThymeleafViewResolver中注入了TemplateEngine,TemplateEngine中注入了TemplateResolver。SpringTemplateEngine用于解析(parse)template文件,并且进行渲染,而TemplateResolver,和InternalResourceViewResolver类似,使用和前缀和后缀属性,再加上视图的逻辑名称,以确定template文件的位置。templateMode设置为HTML5表示将用于渲染HTML5文件。

定义Thymeleaf模板

Thymeleaf模板主要是html。不像JSP那样有特别的标签和标签库,而是在html中引入Thymeleaf的namespace后,通过给html的标签增加属性的方式来添加功能。

  1. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
  2. <head>
  3. <title>Spittr</title>
  4. <link rel="stylesheet" type="text/css" th:href="@{/resources/style.css}"></link>
  5. <h1>Welcome to Spittr</h1>
  6. <a th:href="@{/spittles}">Spittles</a> |
  7. <a th:href="@{/spitter/register}">Register</a>
  8. </body>
  9. </html>

上面的例子中使用了th:href标签,并使用表达式来表示要跳转的页面。Thymeleaf模板会解析这些标签和表达式,生成相应的html。即使解析失败,结果也只是a标签没有href属性而已。在浏览器中,只是无法点击超链接,并不会像JSP那样显示奇怪的JSP代码。

小结

本文列举了JSP的缺陷,介绍了一种新型的模板:Thymeleaf,并详细说明了如何使用Spring配置Thymeleaf视图解析器,简单讲解了Thymeleaf模板的使用。在后续文章中,将讲解其它几个模板的使用。

欢迎扫描下方二维码关注微信公众号【谈谈IT】,第一时间获取最新文章。
欢迎关注同名公众号

发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读