很多时候我们可以用JSTL来处理Java中的一段代码,也可以用JSTL来处理JSP中的一段代码,例如简单的比较,并根据比较结果适本地设置值。
考虑到最佳实践和性能,我们应该选择哪种替代方案?从性能角度来看两者相同吗?
附注不谈论 Java scriptlet。
最佳答案
JSTL 和任何 JSP 服务器标记的目的都是从 JSP 中获取 Java 代码。
JSP 是一种用于应用程序“ View ”部分的表示技术。它应该只处理表示逻辑。但由于在 scriptlet 中添加 Java 代码非常容易,因此许多开发人员开始在 JSP 中添加业务逻辑。因此,您最终会得到一个难以测试的应用程序(正如 @Steve C 在他的回答中评论的那样),因为您的 separation of concerns 很差。 。这反过来又导致了可维护性的严重困惑。
因此服务器标签替换 the use of scriptlets (a practice frowned upon)并迫使您将业务代码放在它所属的位置:在具有非常明确的行为的 Java 类中。
这是为了介绍,现在回到你的问题......
使用服务器标记确实比在纯 Java 代码中执行相同的操作需要更多的代码,因为有一个完整的 lifecycle容器将标签放入其中以便从中获取输出。是的,它比较慢,但大多数时候它是无关紧要的。在考虑性能时,您必须牢记 the rules of optimization :
First Rule Of Optimization - Don't.
Second Rule Of Optimization - Don't... yet.
Profile Before Optimizing
对于最佳实践,您不应该因为可以而将代码拆分到 Java 类和 JSP 之间,从而牺牲代码的可读性和可维护性。正如我在一开始所说的,JSP 用于表示,而不是业务逻辑。相关代码应该粘在一起,而不是分散在应用程序的不同层中。
关于java - Java 与 JSP 的 JSTL 的性能比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23820390/