这个项目是将php上广泛使用的smarty模板语言移植到了java平台上,不提供模板对一些特定php语法的支持,例如<?php>等

smarty4j的函数节点位于org.lilystudio.smarty4j.statement.function.*中,函数使用$开头,后接完整的函数名称,或者在smarty.properties中定义相关的函数路径声明第三方函数库。smarty4j的变量调节器节点位于org.lilystudio.smarty4j.statement.modifier.*中,与函数的名称规则一致,同样在smarty.properties中支持定义扩展包的路径。如果需要自己定义函数和变量调节器,需要分别继续org.lilystudio.smarty4j.statement中的BlockFunction、LineFunction与Modifier类,可以覆写parser方法用于生成二进制类编码,也可以覆写start,end,execute等方法直接写java代码处理函数,相关的说明可以通过导出javadoc文档来查看。

smarty4j使用asm.jar,将模板文件或者字符串编译成java类直接执行,效率比一般的模板解释的方式处理要快。通过在smarty.properties中设置模式能够选择即时更新与不进行更新验证,前者一般用于开发时,后者一般在上线后使用加快处理速度。

对于熟悉smarty语法的做过php开发程序员,在java平台下可以考虑使用smarty4j模板库,使用它可以引入一些php下的smarty资源,加快开发的速度。

调用示例

Engine engine = new Engine();//加载模板引擎

Template template = engine.getTemplate(path); //打开模板文件

Context context = new Context(); // 生成数据容器对象

//这里需要设置数据的值context.set("aaa",123);ByteArrayOutputStream out = new ByteArrayOutputStream(); //设置接收模板数据的输出流template.merge(context, out); // 处理生成结果

smarty java_Smarty for java的使用相关推荐

  1. 关于分布式多级缓存架构,也许你一直考虑的太简单了

    这篇想聊的话题是:「分布式多级缓存架构的终章」,如何解决大流量.高并发这样的业务场景,取决于你能不能成为这个领域金字塔上层的高手? 能不能把这个问题思考清楚决定了你的成长速度. 很多人在一个行业5年. ...

  2. 大厂都拿捏的缓存方案,平台级分布式缓存,什么业务才合适?

    所有程序猿都对那缓存并不陌生,好似那风一样的女子只为你独自而舞.只见那回眸一笑百媚生,让你甚是吝惜,惹人怜爱. 但随着项目规模不断增大变强,光是单个缓存就难以招架,优而显得力不从心. 这时伴随着多级缓 ...

  3. CTF Web方向考点总结

    CTF Web 0X00 前言 做题已经快四个月了,接触了大大小小的题型,收藏的大师傅们的解题思路.题型总结的博客已经很多了,每次都要一个一个翻很麻烦,于是写下了这一个总结,实际上是把各大博客内容汇总 ...

  4. bugku Simple_SSTI_1and 2(SSTI模板注入)

    1.Simple_SSTI_12.Simple_SSTI_2 输入:http://114.67.175.224:15355/?flag={%%20for%20c%20in%20[].class.bas ...

  5. 浅谈服务端渲染(SSR) 与使用场景

    什么是SSR(服务端渲染)MUA? SSR是Server Side Render的缩写,简单来讲:服务端渲染 就是网页上面呈现的内容在服务器端就已经生成好了,当用户浏览网页时,服务器把这个在服务端生成 ...

  6. 攻防世界easy_web

    python-flask-ssti(模版注入漏洞) SSTI(Server-Side Template Injection) 服务端模板注入,就是服务器模板中拼接了恶意用户输入导致各种漏洞.通过模板, ...

  7. 什么是缓存架构,什么又是后端分布式多级缓存架构,全文解析

    缓存,已经是一个老生常谈的技术了,在高并发读的情况下对于读服务来说可谓是抗流量的银弹. 高并发三大利器:缓存.限流.降级. 今天我们就来谈谈缓存.对于缓存,我的理解是让数据更接近于用户,目的是让用户的 ...

  8. 大厂都咋用平台、分布式缓存?起码你要懂技术,高级还得懂业务

    所有程序猿都对那缓存并不陌生,好似那风一样的女子只为你独自而舞.只见那回眸一笑百媚生,让你甚是吝惜,惹人怜爱. 但随着项目规模不断增大变强,光是单个缓存就难以招架,优而显得力不从心. 这时伴随着多级缓 ...

  9. 白头搔更短,SSTI惹人心!

    前言 为什么说Java审计南在SSTI呢? 现行SSTI(Server-Side Template Injection ) 资料不少,但与Java,以著名的先知社区为例(如下图所示),关于SSTI文章 ...

最新文章

  1. 阐述一下Mysql事务的四个特性_数据库事务的四个基本性质?
  2. CentOS LVM
  3. 怎么看空调定时成功_风管机和中央空调傻傻分不清?看了你就明白怎么选了
  4. nginx nodejs环境配置_基于docker的nodejs、php开发环境,包含多种组合安装
  5. 深度学习Caffe实战笔记(19)Windows平台 Faster-RCNN 制作自己的数据集
  6. __name__=__main__
  7. 【leetcode】Permutations
  8. java 网页正文抽取算法_GitHub - hfut-dmic/ContentExtractor: 自动抽取网页正文的算法,用JAVA实现...
  9. Java 对象布局、大小工具 jar包工具类jol
  10. 松花江等三流域禁渔效果不理想 跨界水域成管理盲区
  11. 业界软件测试工程师认证(ISTQB)
  12. 为什么电脑桌面无计算机图标,我的电脑桌面图标都没名字了为什么
  13. 编写Test3.jsp,在JSP页面中静态包含文件Sqrt.jsp(该页面计算数据的算术平方根)。要求程序有两个文件,主文件静态包含一个能够计算数据的算术平方根的页面。
  14. Vue2.0+Vue3.0全套教程
  15. 支付宝服务商模式下的支付开发
  16. mybatis 插入insert对象
  17. 嵌入式系统开发笔记88:认识51微控制器系统架构
  18. removeNode is not defined removeNode is not a function
  19. 微软自动调参工具—NNI安装与快速上手,AutoML必备工具
  20. Python内置函数——最值与求和

热门文章

  1. OpenCV 口罩佩戴检测
  2. 魔域服务端架设开服需要那些东西?
  3. JAVA学习入门2---计算机基础知识
  4. skywalking02 - skywalking安装
  5. 【Python】一个小工具竟是万能视频下载神器?
  6. 计算机辅助教学的网络环境,计算机基础知识:计算机辅助教学
  7. 抖机灵而不翻车:在网页设计中正确地使用幽默
  8. Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码
  9. 开发技术经理应该做什么
  10. 【GO语言学习】使用GO语言输出Emoji表情