您的位置:首页 > Web前端 > JavaScript

JSP与Velocity的比较

2016-04-06 23:38 260 查看
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模板就可以渲染出结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet jsp