java - Java 与 JSP 的 JSTL 的性能比较

标签 java jsp jstl

很多时候我们可以用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/

相关文章:

java - Java 井字游戏程序设计第 1 级

java - 从 JTable 写入文本文件,以及从文本文件读取到 JTable

jsp - request.getRemoteUser() 的 JSP EL 等价物是什么?

javascript - 为什么从 Netbeans 运行我的应用程序时会出现空白页面?

java - 如何通过自引用处理实体的 RESTful 响应

java - 为什么HashSet加null不抛出异常,而TreeSet加null会抛出异常

java - Java项目(含前端技术)如何统计KLOC?

java - 如何通过属性文件访问Struts框架上数组列表的值

java - 在 jQuery 中动态设置 cookie 的域

java - 如何使用jSTL从hashmap获取jsp中的值而不进行迭代?