JSP与Velocity的比较

JSP渲染机制:

ServletContext根据path来找到对应的servlet,这个映射在mapper.map方法中完成。通过拓展名".jsp"来找到jspServlet对应的Warpper。接下来调用jspServlet的service方法。

JSP在执行渲染时会被编译成一个java类,而这个类实际上也是一个servlet。


上面代码中的类是JSP编译成java类的一个例子。我们从上面的代码可以发现,被编译成的java类会生成许多变量:pageContext、application、config、session、out、request、repose。有没有很熟悉?这些就是我们在jsp中经常使用的内置变量。然后jsp中的html会被翻译成out.write输出。



而Velocity的渲染机制和jsp是不一样的。Jsp文件实际执行的是jsp对应的java类,简单的说就是将jsp中HTML转化成out.write输出,而jsp中的java代码直接复制到翻译后的java类中。最终执行的翻译后的java类。而Velocity是按照语法规则解析成一颗语法树,然后执行这颗语法树来渲染出结果。

Velocity的具体渲染机制这里先不深入。。。。


总结:

①:执行方式不一样:jsp编译执行,Velocity解释执行。如果jsp文件被修改了,那么对应的java类也会重新编译,而Velocity不需要,只是会重新生成一颗语法树。

②:执行效率不同:编译执行效率高于解释执行。jsp直接执行,而Velocity方法调用是发射执行的。当然jsp中jstl就另当别论了。

③:需要的环境支持不一样:jsp的执行必须要有servlet的运行环境。而Velocity完全不需要其他环境的支持。直接给定Velocity模板就可以渲染出结果。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值