该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-18
ray_linn 写道 weiqingfei 写道 jsp只编译一次,以后就都是servlet的事情了。 你的意思是说,模板比直接的servlet输出还要快????? FreeMarker作者宣称Freemarker是达到html级别。 怎么可能,原理上说不通嘛。 我虽然没有用过freemarker,但是我也知道它是servlet结合模板来生成html的, 这个过程应该是这样的 1.servlet加载模板(也许是常驻内存) 2.动态解析模板,并替换插入数据 3.写入输出流 而jsp编译成的servlet,代码就内置了所有的html字符串,只是把数据都顺序的写入输出流。 至于业务上的时间花费,双方都一样。 死活都想不通,多了一个动态解析的模板,怎么可能比直接使用servlet要快。 |
|
返回顶楼 | |
发表时间:2007-05-18
ray_linn 写道 weiqingfei 写道 ray_linn 写道 weiqingfei 写道 1.没有人规定一定要在jsp里面写业务逻辑吧
2.刚才是谁说的,模板比jsp运行的快? 如果你带领一个团队,你如何保证每个人一定不写业务逻辑在jsp pages里? 详细试样书里不让写,程序员就不能写。 在这方面,菜鸟比高手听话多了。 为此付出的规范,检查,如果你认为值得的话。 至于用文档限制,还是用代码限制,我不想争辩什么。 xp也许没有这些东西。 但是传统开发中,代码规范,代码review等都是有的。 接口都是有SE来定的,至于程序员,只要填代码就可以了。 |
|
返回顶楼 | |
发表时间:2007-05-18
你想不通我也想不通
不过我用下来的感觉是VM要比JSP快的 当然没有特别去写过一样的东西来TEST这个 现在公司所有的项目已经早就全不用JSP了 只有一个几年前做出来的维护项目还在用 |
|
返回顶楼 | |
发表时间: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行),我只是照抄过来,没有加以验证 |
|
返回顶楼 | |
发表时间:2007-05-18
sg552 写道 weiqingfei 我赞成你的观点。
不用和ray辩论了,弄不好就被他人身攻击,惹上一身腥。 我们带领团队开发时,知道怎么做 就可以了。 JAVAEYE现在啊,跟以前差远了。高手归隐,菜鸟乱飞。题目都弄的很牛B, 内容没有深刻的。 兄弟,讨论中出现小冲突也是正常的,每个人讨论的方式也不一样,但是我相信这里绝大多数人只是在讨论技术问题,对事不对人的。 只要保持一颗平常的心去讨论就ok,就技术论技术。 |
|
返回顶楼 | |
发表时间:2007-05-18
velocity的好处是,ui可以完全独立出去设计页面,而我们的数据,可以很方便的嵌套在vm里.
|
|
返回顶楼 | |
发表时间: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的规范? |
|
返回顶楼 | |
发表时间:2007-06-07
我比较关心在不同的操作系统中对中文的支持
|
|
返回顶楼 | |
发表时间:2007-06-08
对我而言 Velocity 最不方便的地方就是数值计算.
其他的还好,不过可以自己写宏来解决. |
|
返回顶楼 | |
发表时间:2007-06-08
从回帖的情况来看,似乎使用velocity的同学比较多啊,是不是因为freemarker的文档弄的太烂了呀
|
|
返回顶楼 | |