我将某些JSTL逻辑重构为Java.当时我没有考虑性能,只是假设Java会更快.这个假设正确吗?
每个语句包含的JSTL代码,这些语句已重构为Java for循环.我基于这样的假设,即在编译之前必须先将JSTL代码转换为Java.
解决方法:
您的假设(大部分)是错误的.您的servlet容器(例如Tomcat)会将所有jsp页面编译为Java servlet,然后编译为java字节码,而这最终是在请求jsp页面时运行的.因此,无论如何,jsp页面都会透明地转换为java代码. jstl自定义标记库实现逻辑和Java代码之间可能会有性能差异,但这是由于特定的实现,而不是Java与jstl.
在Tomcat的默认配置下,直到第一次访问jsp资源时才进行jsp编译,因此,对jsp页面的第一个请求(仅)有一个启动惩罚.如果您担心第一次点击,可以配置jsp页面进行预编译.对于大多数用例而言,这不值得麻烦.