我希望有人在这个问题中解释BlausC的惊人答案中的一些要点。
他说,脚本有一些缺点,它们是:
最后一件事是他从Oracle的建议中引用的内容:
JSP脚本不应用于编写业务逻辑。
在MVC模式中,我只在表示层使用scriptlet。他在这里是什么意思?
发布于 2010-12-26 23:10:15
您似乎只关注脚本的表示和流控制部分,比如在使用if、for和switch语句以及out.print()方面。您似乎将scriptlet 1:1与JSTL进行了比较。这是错误的。我所讨论的不仅仅是流控制部分(它确实将被JSTL所取代),而是一般在JSP文件中编写原始Java代码。例如,收集请求参数、验证和转换值、与数据库和其他Java类/方法交互等等。所有您通常(间接)在Servlet或过滤器中做的事情。
发布于 2010-12-26 21:20:21
在JSP中不应该有scriptlet代码。我建议100%的JSTL和零抄写代码。
联署材料应该是纯粹的陈述。这是仅使用JSTL编写JSP的潜在好处,因为它们从其他地方获取所有的动态数据。让服务层具有业务逻辑,并确定JSP需要哪些数据。
这也回答了您的单元测试问题。您不必对JSP进行单元测试;这将是类似Selenium的UI测试。如果逻辑位于服务层,那么测试它的方式是显而易见的。
联合来文不应继承。当然,您可以使用类似于SiteMesh的东西将它们组合在一起,但是继承在JSP中没有任何作用。一旦它们从Servlet继承,那么链就应该结束。
另外,这是个错误的选择。任何人都不应要求重用、继承或单元测试。但这并不意味着没有明确的赢家:它是JSTL。除了非常罕见的一行程序之外,没有人应该在JSP中使用scriptlet。斯克里特人在讨好麻烦。
这些天来,我更喜欢作为Java的web模板解决方案,而不是JSP。这只是我的观点。
发布于 2010-12-26 21:21:35
我不能代表BalusC说话,但总的来说,我相信他认为这类事情应该由您的普通Java代码来完成(如果您对MVC有兴趣的话,在Controller和Model中)。
https://stackoverflow.com/questions/4535423
复制相似问题