HTTL之初印象
概述
HTTL (Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似。
简洁友好的模板语法
HTTL语法尽可能符合HTML和JAVA开发者的直觉,指令和老牌的Velocity类似,但改进了Velocity中不符合直觉的地方。 只保留最基本的条件迭代控制指令,渲染过程不允许修改原始数据,防止模板引入过多业务逻辑。默认使用HTML注释语法,避免干扰原生HTML页面。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!--#set(List<Book> books)--><html> <body> <!--#if(books)--> <table> <!--#for(Book book : books)--> <tr> <td>${book.title}</td> </tr> <!--#end--> </table> <!--#end--> </body></html> |
改进Velocity不符合直觉的地方:
- 指令中的变量不用加$符,如:#if(a == b),而不像Velocity那样:#if($a == $b),加$有点废话,而且容易忘写。
- ${x}当变量为null时,输出空白串,而不像Velocity那样:输出源码${x},如果用$!{x},感叹号容易忘记写。
- 支持在输出时进行表达式计算,如:${i + 1},而不像Velocity那样:要先#set($j = $i + 1)到一个临时变量。
- 采用更直观的方式,调用静态工具方法,如:${"a".toChar},而不像Velocity那样:${StringTool.toChar("a")}。
精益求精的性能优化
HTTL将模板编译成JAVA字节码运行,并使用强类型推导,减少运行期反射和转型, 渲染速度接近Java硬编码输出,比Velocity等其它模板引擎快一个数量级。 比JSP也快,因为JSP只有Scriptlet是编译的,Tag和EL是解释执行的,而HTTL是全编译的。

高质量的设计与实现
HTTL采用微核+插件体系,所有环节均可扩展或替换,方便集成和二次开发。 允许在模板内声明入参变量类型,使模板类型自描述,方便IDE实现属性和方法补全提示,对开发过程友好。 所有出错信息精确定位行列,并显示出错位置前后相关内容,方便排错。

严格确保质量,请放心使用,HTTL在发布前,已通过全面测试:
- 所有语法指令函数模板单元测试,确保所有模板指令的解析和执行正确。
- 性能对比基准测试,确保性能接近Java硬编码输出,高出其它引擎一个数量级。
- 长时间运行稳定性测试,确保不出现FullGC,内存溢出,死锁,CPU占满,抖动等。
- 内存占用和CPU耗时Profiler分析,确保不出现非预期的内存和CPU瓶颈。
- FindBugs代码问题检测,确保不出现空指针,资源未关闭等明显错误。
- JDepend分包依赖检测,确保分包依赖的合理性。
- Web应用集成测试,确保在SpringMVC,Struts,Webx等集成中可用。
- 环境兼容性测试,确保在Liunx,Windows,OSX,JDK1.5,1.6,1.7等环境可用。
HTTL之初印象的更多相关文章
- Vue.js之初印象
一.背景 MVVM模式,很多人在说在用,好吧,我落后了,我目前的项目木有用到MVVM模式的框架,vuejs,reactjs,angularjs,nonono,自己去捣鼓过ng,项目木有用到.实在不敢称 ...
- Django初印象之视图(view)
一.view的初印象 一个视图函数(类),简称视图.我们发起web请求时,返回的web响应.[大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中.] ...
- 初印象至Vue路由
初印象系列为快速了解一门技术的内容,后续会推出本人应用这门技术时发现的一些认识. Vue路由和传统路由的区别: Vue路由主要是用来实现单页面应用内各个组件之间的切换,同样支持传递参数等功能.而传统路 ...
- OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 关于摩尔定律: 摩尔定律19 ...
- [强化学习]Part1:强化学习初印象
引入 智能 人工智能 强化学习初印象 强化学习的相关资料 经典书籍推荐:<Reinforcement Learning:An Introduction(强化学习导论)>(强化学习教父Ric ...
- Three 之 Animation 初印象
Animation 初印象 动画效果 播放动画需要基本元素 AnimationMixer 一个对象所有动作的管理者 用于场景中特定对象的动画的播放器.一个对象可能有多个动作,Mixer 是用来管理所有 ...
- [置顶]
Retrofit2 初印象?
鄙人由于工作繁忙很久没写博客了还望大家谅解!之前csdn登不上,算了不说借口了,retrofit2相信已经很火了吧,而且上手也比较容易,之前可能大家都是用Volley,Okhttp.Okhttp3其实 ...
- AngularJS 初印象------对比 Asp.net MVC
之前就早耳闻前端MVC的一些框架,微软自家的Knockout.js,google家的AngularJs,还有Backone.但未曾了解,也不解为什么前端也要这么分.这两天看了AngularJs的官方教 ...
- Web API初印象
理解REST,RESTful和Web API 1.REST:Representational State Transfer表征状态转移,是Roy Fielding博士在2000年他的博士论文中提出来的 ...
随机推荐
- background-image使用svg如何改变颜色
结论 在我多番测试之后,才发现background-image使用svg,改变颜色根本做不了. 分析 当svg图片被使用成background-image,颜色的设置需要在svg内部才能生效.在外部C ...
- Linux中的零拷贝技术
转载:https://www.jianshu.com/p/fad3339e3448 引文## 在写一个服务端程序时(Web Server或者文件服务器),文件下载是一个基本功能.这时候服务端的任务是: ...
- 如何用chrome扩展将网页变成黑底白字,用以保护视力
不知道有没有科学依据,自己感觉黑底白字对视力好些,于是动手加个chrome扩展: 第一步:建个文件夹,名称比如叫changeColor; 第二步:在changeColor文件夹中建三个文件:manif ...
- ubuntu18.04 递归批量删除op_test_xml/ 目录下 .pyc后缀的文件
find op_test_xml/ -type f -name "*.pyc" -exec rm -f {} \;
- centos7 mongodb安装
参考文档 http://www.runoob.com/mongodb/mongodb-connections.html https://www.cnblogs.com/layezi/p/7290082 ...
- 三、Oracle 查询+where条件
一.查询1.distinct:查询去除重复的行,是所有的列都重复才满足条件2.列别名:as或者空格 select name as 姓名 from student3.查询字段可以做数学运算,也可以做字符 ...
- mysql 索引原理
一.索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的最主要功能之 ...
- Android root检测方法小结
转载目的,之前主要应用这里的原理解决了,手机被某个APP检测为root过的手机的问题,记录后续可能参考. 出于安全原因,我们的应用程序不建议在已经root的设备上运行,所以需要检测是否设备已经root ...
- Ubuntu14.04安装nvidia-docker2
1.在安装nvidia-docker2以前需要先安装docker: 首先添加PPA源并更新源: add-apt-repository ppa:ubuntu-sdk-team/ppa apt-get u ...
- MFC 坦克定位
最近学习MFC,写了个用键盘上下左右移动的坦克界面,效果图: 先用VC++新建一个最简单的MFC项目,基于Dialog的 1. 添加坦克图片资源:略 2. 添加3个变量:x, y, m_bitmap ...