论坛首页 Java企业应用论坛

模板:velocity和freemarker的比较

浏览 59250 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-05-18  
ray_linn 写道
weiqingfei 写道

jsp只编译一次,以后就都是servlet的事情了。

你的意思是说,模板比直接的servlet输出还要快?????


FreeMarker作者宣称Freemarker是达到html级别。


怎么可能,原理上说不通嘛。
我虽然没有用过freemarker,但是我也知道它是servlet结合模板来生成html的,
这个过程应该是这样的
1.servlet加载模板(也许是常驻内存)
2.动态解析模板,并替换插入数据
3.写入输出流

而jsp编译成的servlet,代码就内置了所有的html字符串,只是把数据都顺序的写入输出流。

至于业务上的时间花费,双方都一样。

死活都想不通,多了一个动态解析的模板,怎么可能比直接使用servlet要快。
0 请登录后投票
   发表时间:2007-05-18  
ray_linn 写道
weiqingfei 写道
ray_linn 写道
weiqingfei 写道
1.没有人规定一定要在jsp里面写业务逻辑吧
2.刚才是谁说的,模板比jsp运行的快?


如果你带领一个团队,你如何保证每个人一定不写业务逻辑在jsp pages里?


详细试样书里不让写,程序员就不能写。
在这方面,菜鸟比高手听话多了。



为此付出的规范,检查,如果你认为值得的话。


至于用文档限制,还是用代码限制,我不想争辩什么。
xp也许没有这些东西。

但是传统开发中,代码规范,代码review等都是有的。
接口都是有SE来定的,至于程序员,只要填代码就可以了。
0 请登录后投票
   发表时间:2007-05-18  
你想不通我也想不通
不过我用下来的感觉是VM要比JSP快的
当然没有特别去写过一样的东西来TEST这个

现在公司所有的项目已经早就全不用JSP了  只有一个几年前做出来的维护项目还在用
0 请登录后投票
   发表时间:2007-05-18  
weiqingfei 写道
ahuaxuan 写道
weiqingfei 写道
1.没有人规定一定要在jsp里面写业务逻辑吧
2.刚才是谁说的,模板比jsp运行的快?

和jsp相比,velocity这样的模板语言有着类似的功能,脚本能力则有所欠缺-对于大多数开发者来说,也许脚本能力的欠缺反而是好事。如果选择jsp,则应该多考虑jstl和jsp表达式,避免使用杂乱的jsp脚本。

模板语言尽管它们是解释执行的,但常常比jsp更快。所以jsp并没有特别的性能优势。(实际上情况很可能正相反:模板技术的性能可能更高)

使用jstl和jsp表达式对大多数开发者来说应该是家常便饭,但是同样的功能,比如说c:foreach标签就比#foreach in来得更繁琐,而且每次修改jsp都需要编译,大得页面一编译就要好几秒钟,一个项目累计下来花在编译上就有很多时间了


jsp只编译一次,以后就都是servlet的事情了。

你的意思是说,模板比直接的servlet输出还要快?????

但是JspServlet是分段写入流,用模板是把整个模板一次写入流,可能问题在这里,这一点我也没有测试过,只不过

“和jsp相比,velocity这样的模板语言有着类似的功能,脚本能力则有所欠缺-对于大多数开发者来说,也许脚本能力的欠缺反而是好事。如果选择jsp,则应该多考虑jstl和jsp表达式,避免使用杂乱的jsp脚本。

模板语言尽管它们是解释执行的,但常常比jsp更快。所以jsp并没有特别的性能优势。(实际上情况很可能正相反:模板技术的性能可能更高)

这段话是without ejb上的原话(详见without ejb第402页,倒数第7行),我只是照抄过来,没有加以验证
0 请登录后投票
   发表时间:2007-05-18  
sg552 写道
weiqingfei  我赞成你的观点。

不用和ray辩论了,弄不好就被他人身攻击,惹上一身腥。

我们带领团队开发时,知道怎么做 就可以了。

JAVAEYE现在啊,跟以前差远了。高手归隐,菜鸟乱飞。题目都弄的很牛B, 内容没有深刻的。


兄弟,讨论中出现小冲突也是正常的,每个人讨论的方式也不一样,但是我相信这里绝大多数人只是在讨论技术问题,对事不对人的。
只要保持一颗平常的心去讨论就ok,就技术论技术。
0 请登录后投票
   发表时间:2007-05-18  
velocity的好处是,ui可以完全独立出去设计页面,而我们的数据,可以很方便的嵌套在vm里.
0 请登录后投票
   发表时间:2007-06-06  
昨天发现velocity在转义html的时候,会调用common-lang里的转义方法,如下

if (entityName == null) {
                if (c > 0x7F) {
                    writer.write("&#");
                    writer.write(Integer.toString(c, 10));
                    writer.write(';');
                } else {
                    writer.write(c);
                }
            } else {
                writer.write('&');
                writer.write(entityName);
                writer.write(';');
            }

0x7f是只单字节最大的一个,所以凡是是双字节以上的(比如说汉字是双字节)都会被转义成$#+数字,转义过后的$#+数字在浏览器里还是能够正常显示为汉字的。除了重写这个转义的方法,有没有其他方法可以不转义中文呢,抑或说转义双字节是w3c的规范?
0 请登录后投票
   发表时间:2007-06-07  
我比较关心在不同的操作系统中对中文的支持
0 请登录后投票
   发表时间:2007-06-08  
对我而言 Velocity 最不方便的地方就是数值计算.
其他的还好,不过可以自己写宏来解决.
0 请登录后投票
   发表时间:2007-06-08  
从回帖的情况来看,似乎使用velocity的同学比较多啊,是不是因为freemarker的文档弄的太烂了呀
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics