thymeleaf的手动渲染HTML模板
thymeleaf的手动渲染HTML模板
现在很多公司都在thymeleaf作为前端的显示,但是刚看了一份博客,现在还有人在不断的诟病thymeleaf的性能问题,然后听说了一个超级牛逼的叫beetl.其实就是下面这个博客
https://my.oschina.net/xiandafu/blog/1505526?p=4
,然后看了看这个Beetl的东西,感觉确实很牛逼啊,但是不在今天的博客范围内,以后有机会可以试试,为什么我不写freemaker,因为我觉得语法太恶心,想当年,唉,真是往事不堪回首啊,我现在还觉得freemaker的语法恶心.....
言归正传:下面我们来手动渲染一段html代码和一个html页面
添加依赖:
- <!-- Thymeleaf 模板引擎 -->
- <dependency>
- <groupId>org.thymeleaf</groupId>
- <artifactId>thymeleaf</artifactId>
- <version>3.0.9.RELEASE</version>
- </dependency>
1.封装一个渲染的工具类:
- import org.thymeleaf.TemplateEngine;
- import org.thymeleaf.context.Context;
- import java.util.Map;
- /**
- * @author zk
- * @Description:
- * @date 2018-11-14 10:34
- */
- public class HTMLTemplateUtils {
- private final static TemplateEngine engine=new TemplateEngine();
- /**
- * 使用 Thymeleaf 渲染 HTML
- * @param template HTML模板
- * @param params 参数
- * @return 渲染后的HTML
- */
- public static String render(String template,Map<String,Object> params){
- Context context = new Context();
- context.setVariables(params);
- return engine.process(template,context);
- }
- }
2.测试:
- public class Test {
- public static void main(String[] args) {
- String template = "<p th:text='${title}'></p>";
- HashMap<String, Object> map = new HashMap<>();
- map.put("title","hello world");
- String render = HTMLTemplateUtils.render(template, map);
- System.out.println("渲染之后的字符串是:"+render);
- }
- }
这里运行后会输出:渲染之后的字符串是:<p>hello world</p>
达到了我们想要的渲染的效果,其实就是一个字符串的替换.....
下面我们渲染一个html文件.准备一个 example.html 放在resources下面
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <h1 th:text="${name}">列表名称</h1>
- <ul>
- <li th:each="item: ${array}" th:text="${item}">条目</li>
- </ul>
- </body>
- </html>
写一个测试的类:
- public class HTMLTest2 {
- public static void main(String[] args) throws IOException {
- ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
- //模板所在目录,相对于当前classloader的classpath。
- resolver.setPrefix("");
- //模板文件后缀
- resolver.setSuffix(".html");
- TemplateEngine engine = new TemplateEngine();
- engine.setTemplateResolver(resolver);
- //构造上下文(Model)
- Context context = new Context();
- context.setVariable("name", "三国人物");
- context.setVariable("array", new String[]{"曹操", "刘备", "孙权", "汉献帝"});
- //渲染模板
- FileWriter writer = new FileWriter("result.html");
- engine.process("example",context,writer);
- //这个example.html 放在resources 下面.这样机会生成一个result.html文件,结果都已经放进去了.
- }
- }
我们这里把渲染后的结果到result.html 中
运行程序就会生成一个result.html 内容是:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <h1>三国人物</h1>
- <ul>
- <li>曹操</li>
- <li>刘备</li>
- <li>孙权</li>
- <li>汉献帝</li>
- </ul>
- </body>
- </html>
也可以手动的渲染web请求来的,下次咱们再补充上来.敬请期待
其实渲染最后都是调用的这个方法:
/**
* org.thymeleaf.templateparser.ITemplateParser#parseStandalone(org.thymeleaf.IEngineConfiguration, java.lang.String, java.lang.String, java.util.Set, org.thymeleaf.templateresource.ITemplateResource, org.thymeleaf.templatemode.TemplateMode, boolean, org.thymeleaf.engine.ITemplateHandler)
*/
thymeleaf的手动渲染HTML模板的更多相关文章
- springboot整合thymeleaf手动渲染
Thymeleaf手动渲染 为提高页面访问速度,可缓存html页面,客户端请求从缓存获取,获取不到再手动渲染 在spring4下 @Autowired ThymeleafViewResolver th ...
- Thymeleaf+SpringMVC,如何从模板中获取数据
Thymeleaf+SpringMVC,如何从模板中获取数据 在一个典型的SpringMVC应用中,带@Controller注解的类负责准备数据模型Map的数据和选择一个视图进行渲染.这个模型Map对 ...
- node 渲染html模板配置
node 渲染html模板配置 安装swig模块 npm install swig--save - dev 加载swig模块 var swig = require('swig'); 模板配置 //第一 ...
- Thymeleaf+SpringMVC,如何从模板中获取数据(转)
在一个典型的SpringMVC应用中,带@Controller注解的类负责准备数据模型Map的数据和选择一个视图进行渲染.这个模型Map对视图进行完全的抽象,在使用Thymeleaf的情况下,它将是一 ...
- 【Thymeleaf】浅谈Java模板引擎(带更新...)
什么是模板引擎 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档. 为什么要用模板 ...
- Django初探(模板渲染、模板语音、simple_tag、母版子版、静态配置文件)
一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看 ...
- Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件
一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看 ...
- 手动开发PHP模板引擎 一 (35)
模板叫做TPL,模仿于smarty模板引擎. 我们所说的模板是Web模板,是主要由HTML标记组成的语言来编写的页面,但也有如何表示包含动态生成内容的方式(解析标签).模板引擎是一种软件库,允许我们从 ...
- layui表格渲染中模板的使用举例
实例一: { field: 'status', align: 'center', title: '活动状态', templet: function (d) { if (d.status == &quo ...
- (八)Thymeleaf的 th:* 属性之—— 模板布局& th:with& 属性优先级
3.7 模板布局 模板名称:layout.html 3.7.1 th:fragment e.g.模板名为footer.html页面body部分如下: <body> <div th:f ...
随机推荐
- st包无效
本机正常安装了 oracle11g 和 ArcSDE10, 想要查询某个空间图层表的shape字段值,所以写了如下sql语句在PL/SQL里执行,select sde.st_astext(shape ...
- 探索Matplotlib-Gallery:Python数据可视化的游乐园
探索matplotlib-gallery:Python数据可视化的游乐园 在数据科学的世界里,数据可视化是一个不可或缺的工具,它帮助我们理解数据.发现模式.并传达信息.Matplotlib是Pytho ...
- Python 和 Podman
1. Windows 10 上安装 Python 开始在 Windows 上使用 Python(初学者) 2. 使用 pip Python 的 Microsoft Store 安装包括 pip(标准包 ...
- Alain 配置管理
app/assets/tmp/app-data.json 中保存了默认的一些应用配置 app 应用配置 user 默认用户配置 menu 菜单配置信息 在 App.Module 中,使用 APP_IN ...
- 藏不住了,这届数字打工人(RPA)想在各行各业“当骨干”!
数字化时代,最红的"打工人"是谁? 无疑,是RPA(数字化劳动力). 这种由机器人流程自动化+AI驱动,模拟人点击.移动鼠标等在电脑上的操作,在各种规则明确.高重复度业务场景中代替 ...
- shell 读取文件内容到数组
在 shell 脚本中,可以使用下面的语法来读取文件内容并将其存储到数组中: bash 复制代码 array=() while read line; do array+=("$line& ...
- 永久告别mac屏幕涂层脱落
转载:https://www.feng.com/post/11380203 我从2011年开始使用Mac book pro电脑,到现在的2016款已经是第三台了,我从来都不会被涂层脱落这个问题困扰,我 ...
- Qt编写物联网管理平台34-地图按钮
一.前言 地图按钮很常见,这也是用户给钱就干的一个模块.设备现场提供了对应的地图文件,其实就是图片文件,做的简单点就是直接CAD图纸转成jpg,做的精致点就是搞了3D风格的立体样式图片,其实还是图片, ...
- 揭秘百度IM消息中台的全量用户消息推送技术改造实践
本文内容由百度技术团队分享,原题"基于公共信箱的全量消息实现",为了帮助理解,有较多修订.内容重组和重新排版. 1.引言 百度的IM消息中台为百度APP以及厂内百度系产品提供即时通 ...
- Github配置SSH避免远程提交重复输入用户名密码
一. 前言 Logon failed, use ctrl+c to cancel basic credential prompt. 是不是提交会遇到上述错误,每次远程提交至Github需要重新输入用户 ...
6833
收藏 2