文档章节

浅谈jsp、freemarker、velocity区别

风象南
 风象南
发布于 2017/10/21 19:50
字数 571
阅读 37
收藏 0

以前做web开发页面层用的基本就是就是,最近公司java项目页面层用的技术是velocity。听说jsp要淘汰,也不知道是真是假,但本人还是比较喜欢jsp的,下面是网上查找的javaweb项目页面3种技术的区别。

在java领域,表现层技术主要有三种:jsp、freemarker、velocity httl、beetl ... 等等。

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多


选择freemarker的原因:
1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
2、宏定义比jsp tag方便
3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
4、支持jsp标签
5、可以实现严格的mvc分离

本文转载自:http://blog.csdn.net/tjcyjd/article/details/16803877

共有 人打赏支持
上一篇: GVP项目
风象南
粉丝 96
博文 272
码字总数 47641
作品 1
西安
技术主管
私信 提问
Spring MVC多视图配置

[java] 1.Spring配置的XML [html] <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-in......

java-苦苦甜甜
2012/10/19
0
0
JSP ajax反提交实现freemarker代码生成器

JSP反提交实现FREEMARKER代码生成器,使得不需要学习FREEMARKER就可以实现代码的生成。 jsp和freemarker优缺点, 以及共同点 特性 JSP FreeMarker 1 模板性 模板语言 模板语言 2 速度 比JSP要...

快速开发师
2016/05/24
592
1
FreeMarker在Web应用中的配置

一、FreeMarker介绍: FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实...

期待变强的菜鸟
2014/11/03
0
0
freemarker与JSP在同一页面中使用

先申明, 这个实践非常不好, 只有在某些时间确实需要这玩意的时候才使用. 原理很简单, 使用HTML的注释<!--内容--> 因为JSP的注释是<%--内容--%>, freemarker的注释是<#--内容-->, 而JSP/freem...

juqkai
2013/07/24
0
0
分享Struts2与Freemarker的配置方法

刚才在OECP社区看到一篇文章,《Struts2与Freemarker的配置方法》觉得很好,所以转发给大家分享一下。 Freemarker是模板引擎,也可以说是一种表现层的框架,它有自己的模板指令,开发者如果不...

oecp
2011/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

gcc -lm -lpthread 一类的理解

C代码调用math.h中的函数有问题,如sqrt函数。会出现问题(点击看问题)。 原因是调用<math.h>中的函数,编译时需要链接对应的库 libm -lm命令是使编译的时候,链接数学库; -lptread 链接线...

shzwork
35分钟前
0
0
关于360插件化Replugin Activity动态修改父类的字节码操作

近期在接入360插件化方案Replugin时,发现出现崩溃情况。 大概崩溃内容如下: aused by: java.lang.ClassNotFoundException: Didn't find class "x.x.x.xActivity" on path: 我自己在插件代码......

Gemini-Lin
今天
1
0
mybatis缓存的装饰器模式

一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会导致大量子类的出现...

算法之名
昨天
21
0
单元测试

右键方法 Go To --> Test,简便快速生成测试方法。 相关注解 @RunWith(SpringRunner.class) 表示要在测试环境中跑,底层实现是 jUnit测试工具。 @SpringBootTest 表示启动整个 Spring工程 @A...

imbiao
昨天
4
0
欧拉公式

欧拉公式表达式 欧拉公式的几何意 cosθ + j sinθ 是个复数,实数部分也就是实部为 cosθ ,虚数部分也就是虚部为 j sinθ ,对应复平面单位圆上的一个点。 根据欧拉公式和这个点可以用 复指...

sharelocked
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部