http://www.xwood.net/_site_domain_/_root/5870/5874/t_c255568.html
前言
在java中表现层实现技术主要分为三种:jsp、freemarker、velocity,那么我们如何区分使用呢?下面让我们分析一下它们的优缺点。
一、JSP应该是模板语言中用的最多技术,其特点属性如下:
1.支持java代码直接写入,方便易学
2.支持标签(jsp tag)及自定义标签(jstl)
3.支持表达式语言(el)
4.丰富第三方jsp标签库,如(struts-tag等)
5.性能良好,jsp最终编译为class二进制文件执行
二、Velocity设计弥补jsp模板语言的缺点的,其特点属性如下:
1.不能在其中写java代码,更容易实现mvc分离
2.性能比jsp更好,不需要引入更多依赖库,解析更高效,不支持jsp标签
3.不是官方标准,用户群体和第三方标签库没jsp多
三、freemarker特点属性分析如下:
1.不能编写java代码,对于mvc分离更准确
2.性能一般
3.对jsp标签支持比较好
4.内置大量常用功能,使用方便
5.支持宏定义(类似于jsp标签)
6.使用表达式缺点:a.不是官方标准 b.用户群体和第三方标签库没jsp多
四、对于freemarker使用分析:
1.性能,velocity是最好的,其次是jsp,业务逻辑简单freemark页面是最差,复杂页面上(大量判断、日期金额格式化)页面上,要比jsp的tag和el好
2.freemark宏定义比jsp方便好用
3.其内置大量常用功能,如html过滤,日期金额格式化等,使用方便
4.也支持jsp标签
5.可以实现严格的mvc分离
五、关于如何使用freemarker和velocity,给出了具体代码示例:
1.模板主调用入口,TemplateTest.java
![]() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
2.模板引擎工厂(TemplateFactory.ava),负责调用注入各种模板语言引擎类
![]() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
3.模板引擎接口定义TemplateEngine.java
![]() 1 2 3 4 5 |
|
4.模板引擎基类(AbstractTemplateEngine.java),用于实现公共方法及定义公共方法
![]() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
|
5.模板引擎接口velocity及freemarker实现类(FreemarkerTemplateEngine.java、)
![]() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
![]() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
6.常量公共参数定义接口(Constants.java)
![]() 1 2 3 4 5 6 7 |
|