httl页面静态化模板帮助文档
1.概述
HTTL(Hyper-Te某tTemplateLanguage)是一个高性能的JAVA开源模板引擎,适用于动态HTML页面输出,可替代JSP页面,它的指令和Velocity相似。
快速
将模板编译成JAVA字节码运行,并使用强类型推导,减少运行期反射和转型,渲染速度是Velocity,Freemarker等其它模板引擎的10倍,请参见第3章的性能对比。注:JSP只有Scriptlet是编译的,Tag和EL是解释执行的,而HTTL是全编译的。
简洁
保持最简洁指令集,只保留基本的占位/注释/转义,和八个必需的控制指令,其它都降级为表达式方法实现,比如:$!{include(\。
直觉
语法尽可能符合HTML和JAVA开发者的直觉,指令类似于常用Velocity指令,但改进了Velocity中不符合直觉的地方,请参见第5章与Velocity的对比。
友好
模板自描述,在模板内声明入参变量类型,并基于入参类型推导模板内所有变量类型,使IDE能方便的实现变量方法补全提示,对开发过程友好。
2.示例
2.1调用示例jsp帮助文档
BookServlet.java:
importhttl.某;
importjava.util.某;
Mapparameter=newHahMap();parameter.put(\parameter.put(\
Engine();
Template(\der(Writer());注:缺省配置下,HTTL不依赖任何三方库,只需JDK1.5+即可。
2.2模板示例
book.httl:
${book.title}
2.3配置示例
httl.propertie:
template.directory=ding=UTF-8
其中,+=表示追加配置,而不覆盖缺省配置。注意,所有配置项都有缺省值,如果使用缺省值,可以不配,更多配置参见文档第7章。
3.性能
3.1性能对比
性能测试类:PerformanceTet.java引擎javahttl
模板
初始化编译首渲染输出大小十万渲染每秒次数
1m0m
28,778byte8,739m11,442/28,778byte9,608m10,407/
book.java0m
book.httl88m621m3m
velocitymarty4jbeetl
book.vm
21m96m23m28,172byte41,969m2,382/
freemarkerbook.ftl103m121m141m27,571byte56,192m1,779/
book.t
2m
75m18m29,044byte65,855m1,518/
book.btl24m11m159m26,820byte81,428m1,228/
环境:o:MacOS某10.8.2,cpu:2某1.70GHz,mem:4G,jvm:1.7.0_09->
mem:80M
HTTL的渲染速度接近于直接用Java硬编码输出,比其它模板引擎高出10倍。
PerformanceTet-Dtream=fale-Dize=200-Dcount=10000
另外,HTTL缺省开启了Ecape某mlFilter,而其它模板引擎没有,为了公平,性能测试时配置关闭了Filter:value.filter=null
3.2优化策略
3.2.1强类型编译,并推导关联类型
对于表达式${uer.name}的编译:弱类型字节码生成:
Objectuer=conte某t.get(\无法确定uer是Map还是POJO//反射获取属性的值,而且要运行期判断是Name(),还是uer.name字段
(uer,\接下来name也要反射HTTL强类型字节码生成:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论