在Java领域,表现层技术主要有三种:jsp、freemarker、velocity。

一、jsp优缺点分析

jsp是大家最熟悉的技术,jsp技术诞生的原因是为了对标asp技术,它是在传统的网页HTML文件中插入Java程序段和jsp标记(jsp tag),从而形成jsp文件,后缀名为*.jsp。jsp是一种动态页面技术,它的主要目的是将表示逻辑从servlet中分离出来。

1.1 优点:

1、功能强大,可以写Java代码,但这也是缺点,破坏了MVC结构。
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广泛,并有丰富的第三方jsp标签库
5、性能良好。jsp编译成class文件执行,有很好的性能表现。但是这也是缺点,初次执行非常耗时。

1.2 缺点:

(1)jsp页面前后端的代码写到了一起,耦合度很高,前端开发需要熟悉后台环境,需要去调试。而让后台开发去做不熟悉的界面设计。对两者而言,交替性的工作需要花费一定的学习成本,效率低下。
(2)众所周知,jsp在第一次执行的时候需要转换成servlet类,之后的每次修改都要编译和转换。这样就造成了每次修改都需要等待编译的时间,开发效率低下。

二、velocity优缺点分析

velocity是较早出现的用于代替jsp的模板语言

2.1 优点:

1、不能编写Java代码,可以实现严格的MVC分离
2、渲染速度快,性能良好,据说比jsp性能还要好些
3、使用表达式语言,据说jsp的表达式语言就是学velocity的
4、模板可以是任意扩展名,采用.html也可以,这样就能直接在浏览器中看到效果。

2.2 缺点:

1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好
4、虽然velocity语法简单,但学习成本较大

三、freemarker优缺点分析

freemarker是当前最流行的模板框架

3.1 优点:

1、不能编写Java代码,可以实现严格的MVC分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便
6、使用表达式语言,功能强大,学习成本较低

3.2 缺点:

1、freemarker的map限定key必须是string,不支持其他数据类型。
2、不能直接在浏览器中打开并正确显示模板页面,而需要启动Web应用

四、选择freemarker的原因:

1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
2、宏定义比jsp tag方便
3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便。
4、支持jsp标签
5、可以实现严格的mvc分离
6、freemarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。
7、freemarker不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java等文本文件