Thymeleaf模板技术

本文介绍了如何在Maven项目中引入Thymeleaf依赖,并利用其进行模板渲染,以实现HTML和Java逻辑分离,提升代码清晰度。通过实例展示了如何配置TemplateEngine和创建WebContext,以及在/WEB-INF/templates下的course-list.html模板应用。
摘要由CSDN通过智能技术生成

导入maven依赖

<dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf</artifactId>
      <version>3.0.12.RELEASE</version>
</dependency>

使用模板优势

1.代码简单清晰

2.数据和逻辑耦合度低(html和java代码分离)

模板的逻辑结构

Thymeleaf简单使用

@WebServlet("/template-demo")
public class TemplateDemoServlet extends HttpServlet {
    @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<String> 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<String> getCourseList() {
        return Arrays.asList("JavaSE", "JavaDS", "JavaDB", "JavaWeb", "JavaTest", "JavaEE");
    }
}

对应的/WEB-INF/templates/下的course-list.html

<!doctype html>
<html lang="zh-hans" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>课程列表</title>
</head>
<body>
    <h1>Java 方向的课程列表</h1>
    <ol>
        <li th:each="course : ${courseList}" th:text="${course}"></li>
    </ol>
</body>
</html>

最终效果

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值