Thymeleaf总结(1)

编程

     之前和各位童鞋说过使用thymeleaf去替代jsp来进行web开始页面的参数使用,从今天开始更新笔记,thymeleaf的使用过程,有问题大家可以和我留言,qq博客都可以,本章给大家介绍如何几个问题:

  1.      Thymeleaf的定义
  2.       Thymeleaf和jsp的选择
  3.       如何构建自己的第一个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

回到顶部