关于java:使用scriptlet的缺点?

Disadvantages of using scriptlet?

本问题已经有最佳答案,请猛点这里访问。

我想知道关于使用石印的全部事情。为什么在编写JSP时不建议使用它。每当我问起使用scriptlet进行编码时,他们都会告诉我不要使用它,而是使用jstl。


Web上有几个文章比较了SCRPTLE和JSTL(我猜你先有谷歌搜索),他们中的大多数会告诉你同样的情况。

  • JSTL更易于测试、维护和阅读
  • JSTL可以重复使用
  • JSTL可以将业务逻辑与演示文稿分开
  • JSTL可以在不破坏整个页面的情况下失败。

在另一边

  • JSTL比Scriptlet更难开发(至少有不同的学习曲线)
  • 要在生产中修复脚本,只需更改JSP(有时错误更明显)。

  • 你似乎只专注于演示和流程控制脚本的一部分,如使用if、for和switch语句以及out.print()东西。

  • 您似乎将脚本1:1与JSTL进行了比较。这是错误的。我是不只是谈论流量控制部分(事实上取而代之的是JSTL,但在JSP文件中编写原始Java代码将军。

  • 即收集请求参数、验证和转换值,与数据库和其他Java类/方法等进行交互通常(间接)在servlet或过滤器中执行的操作。

JSP中不应该有scriptlet代码。我推荐100%JSTL和零脚本代码。

  • JSP应该是纯粹的表示。这就是只使用JSTL编写JSP,因为它们获得了所有动态的其他地方的数据。让服务层具有业务逻辑和确定JSP需要什么数据。

  • 这也回答了您的单元测试问题。你不应该这样做单元测试JSP;这些将是类似于硒的UI测试。如果逻辑在服务层中,很明显您是如何测试它的。

  • 不应继承JSP。你当然可以作曲一起使用类似SiteMesh的东西,但继承没有任何作用在你的JSP中。一旦它们从servlet继承,链就应该结束了.

  • 此外,这是一个错误的选择。任何人都不应该要求重用,继承或单元测试。但这并不意味着明确获胜者:是JSTL。没有人应该在JSP中使用scriptlets,除了非常罕见的一个衬里。编剧们在乞求麻烦。

  • 现在我更喜欢将Velocity作为我的Web UI模板解决方案Java,远不止JSPs。只是我的意见。