导入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>
最终效果