Thtmeleaf模板引擎简介

Thtmeleaf模板引擎简介,第1张

Thtmeleaf模板引擎简介

        Thymeleaf 是一个 Java 库。它是一个 XML/XHTML/HTML5 模板引擎,能够将一组转换应用于模板文件,以显示应用程序生成的数据和/或文本。

概述:

        Thymeleaf 的主要目标是提供一种优雅且格式良好的模板创建方式。为了实现这一点,它基于定义在DOM(文档对象模型)上执行预定义逻辑的 XML 标记和属性,而不是将该逻辑显式编写为模板内的代码。

        Thymeleaf 的架构允许快速处理模板,依赖于解析文件的智能缓存,以便在执行期间使用尽可能少的 I/O *** 作。

Thymeleaf 可以处理的模板
  • XML
  • 有效的 XML
  • XHTML
  • 有效的 XHTML
  • HTML5(主要)
总体架构

        Thymeleaf 的核心是一个 DOM 处理引擎。具体来说,它使用自己的高性能 DOM 实现——而不是标准的 DOM API——来构建模板的内存树表示,然后它通过遍历它们的节点并在它们上执行处理器来 *** 作,这些处理器根据当前配置和传递给模板用于其表示的数据集 — 称为上下文。

简单创建
  1. 创建模板引擎对象
  2. 创建解析对象
  3. 关联解析器对象到引擎对象上
  4. 提供给引擎模板本次解析的上下文对象
  5. 准备好要放入的 Context 对象
  6. 通过模板引擎生成最终的正文内容
  7. 填充响应内容
@WebServlet("/template-demo")
public class TemplateDemoServlet extends HttpServlet {
    private static final long serialVersionUID = -8576662234303281900L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 1. 创建模板引擎对象
        TemplateEngine engine = new TemplateEngine();

        // 2. 创建解析器对象
        ServletContext servletContext = req.getServletContext();

        ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(servletContext);
        resolver.setTemplateMode(TemplateMode.HTML);
        resolver.setCharacterEncoding("utf-8");
        resolver.setPrefix("/WEB-INF/templates/");
        resolver.setSuffix(".html");
        resolver.setCacheable(false);

        // 3. 关联解析器对象到引擎对象上
        engine.setTemplateResolver(resolver);

        // 4. 提供给模板引擎本次解析的上下文对象
        WebContext webContext = new WebContext(req, resp, servletContext);

        // 5. 准备好要放入 Context 的数据
        List courseList = getCourseList();
        webContext.setVariable("courseList", courseList);

        // 6. 通过模板引擎生成最终的正文内容
        String responseBody = engine.process("course-list", webContext);

        // 7. 填充响应对象
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        resp.getWriter().println(responseBody);
    }

    private List getCourseList() {
        return Arrays.asList("JavaSE", "JavaDS", "JavaDB", "JavaWeb", "JavaTest", "JavaEE");
    }
}

准备的模板示例:




    
    
    
    课程列表


 Java 方向的课程列表

展示结果:

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5693650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存