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年他的博士论文中提出来的 ...
随机推荐
- beta版本合集
beta版本合集 [<p><span style="text-align: center; padding-bottom: 6px; background-color: # ...
- ABAP 7.50 新特性 – Open SQL中的宿主表达式和其它表达式
在长期的停滞后,Open SQL的发展终于从沉睡中醒来.从ABAP 7.40开始,SAP推进了某些关键的改变,以尽可能地包含SQL92中的特性,并提供与ABAP CDS中的DDL里面的SELECT一样 ...
- 用sed实现wc -w的功能
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7663831.html 作者:窗户 Q ...
- Apache Spark技术实战之6 --Standalone部署模式下的临时文件清理
问题导读 1.在Standalone部署模式下,Spark运行过程中会创建哪些临时性目录及文件? 2.在Standalone部署模式下分为几种模式? 3.在client模式和cluster模式下有什么 ...
- C#反射の一个泛型反射实现的网络请求框架
点击下载源码 C#反射の反射详解(点击跳转)C#反射の反射接口(点击跳转)C#反射反射泛型接口(点击跳转)C#反射の一个泛型反射实现的网络请求框架(点击跳转)
- C#多线程の遇见长耗时操作以及多任务(简明记要)
4.0用 Task.Factory.StartNew(()=>{});4.0以下用 ThreadPool.QueueUserWorkItem(()=>{})4.0以上用 ...
- 路飞学城-Python开发集训-第5章
面向过程:核心是过程二字,过程是解决问题的步骤,相当于设计一条流水线,是机械式的思维方式 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差 面向对象:核心是对象二字,对象就是特征与技能的结合体. ...
- Flask路由报错:raise FormDataRoutingRedirect(request)
raise FormDataRoutingRedirect(request)FormDataRoutingRedirect: A request was sent to this URL (http: ...
- Spring Security(二十):6.2.3 Form and Basic Login Options
You might be wondering where the login form came from when you were prompted to log in, since we mad ...
- SimpleDialogBox
import 'package:flutter/material.dart';import 'dart:ui';import 'dart:async';enum Option{A,B,C}void m ...