我们很多时候可以使用JSTL处理Java和JSP中的一段代码,例如简单比较并根据比较适当地设置值。
考虑最佳做法和表现,我们应该选择哪种替代方案?从性能的角度来看两者是否相同?
P.S。不是在讨论Java scriptlet。
答案 0 :(得分:3)
JSTL和任何JSP服务器标签的目的是将Java代码从JSP中取出。
JSP是一种用于"视图的演示技术。你的申请的一部分。它应该只处理表示逻辑。但是因为在scriptlet中添加Java代码非常简单,许多开发人员开始在JSP中添加业务逻辑。因此,你最终得到了一个测试不佳的应用程序(正如@Steve C在他的回答中所评论的那样),因为你的separation of concerns很差。这反过来会导致可维护性很大。
因此服务器标签会替换the use of scriptlets (a practice frowned upon)并强制您拥有它所属的业务代码:在具有非常明确定义的行为的Java类中。
那是介绍,现在回到你的问题......
使用服务器标签确实需要执行更多的代码,而不仅仅是在普通的Java代码中执行相同的操作,因为有一个完整的lifecycle容器放置标记以便从中获取输出。它是慢的,是的,但大部分时间它都是无关紧要的。在考虑表现时,您必须牢记the rules of optimization:
优化的第一条规则 - 不要 第二条优化规则 - 不要......还有 优化前的配置文件
至于最佳实践,您不应仅仅因为可以而牺牲Java类和JSP之间的代码来牺牲代码的可读性和可维护性。正如我在开始时所说的,JSP用于表示,而不是业务逻辑。相关代码应该粘在一起,而不是遍布应用程序的不同层。
答案 1 :(得分:0)
最佳做法是尽可能保持JSP的逻辑免费。
为java中实现的逻辑编写单元测试要容易得多。
答案 2 :(得分:0)
JSF JSTL和JSP JSTL是相同的,所以它们执行相同的操作。您需要考虑的唯一因素是JSF JSTL表达式的评估频率最高可达六倍。