使用scriptlet的缺点?
这个问题在这里已经有了答案:
网上有几篇文章比较了scrptlets和JSTL(我猜你们已经先搜索了一下),其中大多数会告诉你相同的
另一方面
您似乎只关注scriptlet的表示和流控制部分,就像使用if,for和switch语句以及out.print()一样。
您似乎将scriptlet 1:1与JSTL进行了比较。 这是错误的。 我并不是只谈论流量控制部分(这实际上是由JSTL取代),而是一般在JSP文件中编写原始Java代码。
即收集请求参数,验证和转换值,与数据库和其他Java类/方法进行交互等。您通常(间接)在Servlet或Filter中执行的所有操作。
您不应该在JSP中使用scriptlet代码。 我建议使用100%JSTL和零脚本代码。
JSP应该是纯粹的演示。 这是仅使用JSTL编写JSP的隐藏好处,因为它们将其所有动态数据都存放在别处。 让服务层拥有业务逻辑并确定JSP需要的数据。
这也回答你的单元测试问题。 您不应该对单元测试JSP; 那些将会是像Selenium一样的UI测试。 如果逻辑在服务层,那么测试它就很明显。
JSP不应该被继承。 您当然可以使用SiteMesh之类的东西将它们组合在一起,但继承在JSP中没有任何作用。 一旦从Servlet继承,链应该结束。
此外,这是一个错误的选择。 两者都不需要重用,继承或单元测试。 但这并不意味着没有明确的赢家:它是JSTL。 没有人应该在JSP中使用scriptlet,除非是非常罕见的单行程序。 Scriptlets乞求麻烦。
现在我更喜欢Velocity作为我的Java的Web UI模板解决方案,远远超过JSP。 只是我的观点。