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。只是我的意见。