Thymeleaf总结(1)
之前和各位童鞋说过使用thymeleaf去替代jsp来进行web开始页面的参数使用,从今天开始更新笔记,thymeleaf的使用过程,有问题大家可以和我留言,qq博客都可以,本章给大家介绍如何几个问题:
- Thymeleaf的定义
- Thymeleaf和jsp的选择
- 如何构建自己的第一个thymeleaf案例
一.定义-> 注意标红字体
1. Thymeleaf是用于Web和独立环境的现代服务器端Java模板引擎。
2. Thymeleaf的主要目标是将优雅的自然模板带到您的开发工作流程中—HTML能够在浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。
3. Thymeleaf的主要目标是提供一个优雅和高度可维护的创建模板的方式。 为了实现这一点,它建立在自然模板的概念之上,以不影响模板作为设计原型的方式将其逻辑注入到模板文件中。 这改善了设计沟通,弥合了前端设计和开发人员之间的理解偏差。
4.Thymeleaf也是从一开始就设计(特别是HTML5)允许创建完全验证的模板。
二.Thymeleaf和jsp的选择
其实很多同学是先使用了jsp以后才来尝试thymeleaf的,这与大学的教学课程体系有关系,以计算机科学与技术(主要我是,其他的不敢乱发表评论)这门专业来说,一般会在大二下或者大三开设这门专业课,因为前期会学习很对很多基础及的计算机知识理论,包含硬件,网络等,由于计算机这门学科的复杂性,等到大三,留给java的课时已经不算太多,然后初略的上了javase基础以后,学校一般不会开设专门的servlet课程,有很多学校会直接开设一门JSP的课程,准确的来说是使用jsp展示数据,里面嵌套java代码,这样的代码,写出来的页面可以看,但是真的丑,导致咱们很多同学学完这门学科以后,对于知识架构一知半解,当然如果你课下花了大量时间去了解学习,肯定是完全不一样,在这里我想给各位说大学的课程仅仅考课本,特别是编程这一块,我认为是完全不够的,需要大家加大练习,多涉猎整个学科的知识,对于后期来说大有裨益,好,扯远了,回到jsp和thymeleaf的区别:
JSP:可以直接嵌套java代码,el表达式和标签库简单,符合人的支援理解,主要是由于JSP本质就是一个java类(servlet),但是一但页面复杂化,修改代码起来较为麻 烦,而且如果前端给的模板是静态网页,操作和修改起来较为麻烦,而且连springboot官方都嫌弃(当然有推荐使用自己产品的的想法)
thymeleaf:适用面广,在如下都可以使用
HTML
XML
TEXT
JAVASCRIPT
CSS
RAW
最重要的是前后端分离,页面的展现效果不需要关注,但是thymeleaf对标签要求很严格,里面写东西如果复杂经常需要使用转义符,要不就会报错。
三.如何构建自己的第一个thymeleaf案例
3.1 引入jar包,可以使用maven,pom.xml信息如下:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.7.RELEASE</version>
</dependency>
3.2 构建TemplateEngineUtil.java
package com.e-learn.thymeleaf3.config;import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import org.thymeleaf.TemplateEngine;
/**
* Store and retrieves Thymeleaf TemplateEngine into the application servlet context.
*/
@WebListener
public class TemplateEngineUtil {
private static final String TEMPLATE_ENGINE_ATTR = "com.e-learn.thymeleaf3.TemplateEngineInstance";
public static void storeTemplateEngine(ServletContext context, TemplateEngine engine) {
context.setAttribute(TEMPLATE_ENGINE_ATTR, engine);
}
public static TemplateEngine getTemplateEngine(ServletContext context) {
return (TemplateEngine) context.getAttribute(TEMPLATE_ENGINE_ATTR);
}
}
3.构建ThymeleafConfig.java 配置你的网页信息和编码之类的
package com.e-learn.thymeleaf3.config;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
/**
* Thymeleaf configuration.
*/
@WebListener
public class ThymeleafConfig implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
TemplateEngine engine = templateEngine(sce.getServletContext());
TemplateEngineUtil.storeTemplateEngine(sce.getServletContext(), engine);
}
public void contextDestroyed(ServletContextEvent sce) {
}
private TemplateEngine templateEngine(ServletContext servletContext) {
TemplateEngine engine = new TemplateEngine();
engine.setTemplateResolver(templateResolver(servletContext));
return engine;
}
private ITemplateResolver templateResolver(ServletContext servletContext) {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(servletContext);
resolver.setPrefix("/WEB-INF/templates/");
resolver.setCharacterEncoding("UTF-8");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
}
4.控制器servlet类
package com.e-learn.thymeleaf3.web;import com.e-learn.thymeleaf3.config.TemplateEngineUtil;
import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
@WebServlet("/")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
TemplateEngine engine = TemplateEngineUtil.getTemplateEngine(request.getServletContext());
WebContext context = new WebContext(request, response, request.getServletContext());
response.setCharacterEncoding("utf-8");
context.setVariable("属性名", "属性值-测试");
engine.process("index.html", context, response.getWriter());
}
}
5.页面测试
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Thymeleaf3 + Servlet3 示例</title>
</head>
<body>
<h1>Thymeleaf 3 + Servlet 3 示例</h1>
<p>
Hello <span th:text="${属性名}"></span>!
</p>
</body>
</html>
6.访问页面index.html即可
以上是 Thymeleaf总结(1) 的全部内容, 来源链接: utcz.com/z/511406.html