首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么JSP中存在scriptlet?

为什么JSP中存在scriptlet?
EN

Stack Overflow用户
提问于 2015-01-07 00:24:53
回答 2查看 802关注 0票数 3

我听过无数次关于在JSP中使用Scriptlet(类似于php的<% %>事物)是多么可怕的事情。

  • 已经证明,Scriptlet破坏了代码设计模式,通常情况下,还会破坏模式
  • 许多J2EE框架(如JSF 2.0+)已经禁用了scriptlet的使用。

既然任何用途都不需要脚本,并且可以用JSTL、其他标记库和EL (表达式语言)替换,为什么它们仍然存在呢?为什么Oracle还没有从JSP技术中删除这些脚本呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-07 17:21:09

它们仍然是为了向后兼容性而存在的。

票数 2
EN

Stack Overflow用户

发布于 2018-08-23 17:40:28

这是一个有三年历史的问题,但我想谈谈我个人对这件事的看法。在大型项目(CRM系统)中,我使用与scriptlet一起使用了15年以上的JSP,下面是我的经验:

  • Scriptlet只有在允许MVC模式出现的情况下才能打破MVC模式。我不明白为什么<c:out ...${product.priceVat}><%= product.getPriceVat() %>更好。很多次实际上更糟。它更详细,您可能会丢失类型信息。属性是priceVat BigDecimal还是使用货币格式化的字符串?有时您不知道万一发生了EL (取决于使用的IDE )。
  • 自动重构对我们的项目有很大的帮助。如果一个开发人员将getPriceVat方法重命名为getPriceTax,那么它必须反映在所有的代码库中。IntelliJ IDEA在处理脚本方面非常出色。不确定它是否自动将${product.priceVat}重命名为${product.priceTax} (编辑:确实如此,酷)。Netbeans或Eclipse并不能很好地处理JSP分解。
  • Scriptlet的性能优于EL/JSTL组合。如果你在引擎盖下面看的话,他们就必须这么做。后者生成更大的代码(Apache ),我们为Java方法运行了64 we的代码限制,实际上是被迫用scriptlet替换一些标记。
  • 原型设计。我们经常使用scriptlet(类型代码-刷新页-类型代码-刷新.)来原型JSP。稍后,我们增强我们的标签并清理页面。
  • 热补。我们通过直接更改生产服务器上的一个JSP脚本来防止服务器重新启动几次。如果需要更改类中的编译代码并重新构建整个WAR文件,则不可能。我知道这很恶心。
  • 代码缩进是脚本的噩梦。这显然是使用scriptlet的缺点。
  • 我希望对scriptlets的支持永远不会受到反对。在web.xml中禁用脚本的能力对于干净的代码纯粹主义者来说应该足够好。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27809570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档