先来说说各自的优缺点:
jsp是大家最熟悉的技术
优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库
5、性能良好。jsp编译成class文件执行,有很好的性能表现
缺点:
jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。
velocity是较早出现的用于代替jsp的模板语言
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好
freemarker
优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言
缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多
总结:
性能:velocity>freemarker>jsp
内置功能:freemarker>jsp>velocity
对于项目如何选择?
其实这三个我都做过大型项目,都是在几十亿级别的金融公司做的电商、金融项目,还有内部系统。说说个人感受,无论用什么模板,其实开发中常用的也就是设置值、获取值、做一些循环、判断等。很多喜欢用宏,其实我们项目中没人用到。。。
我们做项目尽量还是以代码清晰、简洁为主。
在这个前提下其实velocity写在html中,看起来非常简洁,而且上手快。
很多人会考虑性能方面,其实如果高并发时候,都会做静态化、缓存等,所以性能可以忽略不计的。
但是velocity有一个问题就是,官方已经不在更新,因为功能已经比较成熟。
当然现在出去找工作一般都要求freemarker,因为现在freemarker比较流行。。。