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模板就可以渲染出结果。
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模板就可以渲染出结果。
相关文章推荐
- JSP/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- JSP学习经验小结分享
- JSP 多条SQL语句同时执行的方法
- 在jsp页面中响应速度提高的7种方法分享
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- JSP上传excel及excel插入至数据库的方法
- JSP中文乱码常见3个例子及其解决方法
- jsp实现将动态网页转换成静态页面的方法
- JSP避免Form重复提交的三种方案
- 纯jsp实现的倒计时动态显示效果完整代码
- JSP自定义标签入门学习
- JSP实现添加功能和分页显示实例分析
- JSP中param标签用法实例分析
- JSP实现从不同服务器上下载文件的方法