为什么鼓励将Java代码放在JSP中?

为什么鼓励将Java代码放在JSP中?,java,jsp,web-applications,Java,Jsp,Web Applications,晚上好, 我目前正在德国的一所学术机构(不是大学)攻读编程学位。在那里,我们还使用JavaEE进行web开发。这个特殊的课程从使用servlet开始,然后发展到JSP。使用servlet来处理业务逻辑,然后用jsp打印这些结果,并使用jsp提供的一些基本功能(例如在集合上循环)似乎是有意义的。但是最近我们深入到JSP的世界,做了Scriptlet和类似的事情,归结起来就是把越来越多的业务逻辑放到JSP文件中,完全抛弃servlet。Java代码和业务逻辑的这种纠结,以及对这样做的赞扬,我有点难以

晚上好,

我目前正在德国的一所学术机构(不是大学)攻读编程学位。在那里,我们还使用JavaEE进行web开发。这个特殊的课程从使用servlet开始,然后发展到JSP。使用servlet来处理业务逻辑,然后用jsp打印这些结果,并使用jsp提供的一些基本功能(例如在集合上循环)似乎是有意义的。但是最近我们深入到JSP的世界,做了Scriptlet和类似的事情,归结起来就是把越来越多的业务逻辑放到JSP文件中,完全抛弃servlet。Java代码和业务逻辑的这种纠结,以及对这样做的赞扬,我有点难以理解。我一直认为web应用程序开发的主要目标之一是将主要业务逻辑与前端事务分离(django及其模板语言在imho中做得非常好)

我觉得这种想法有点令人难以置信,一方面,他们教我们在编写一个主题的代码时牢记松散耦合,而在另一个主题中,我们被教导将越来越多的业务逻辑转移到模板中。 更让我困扰的是,如果你在谷歌上搜索一些java ee问题的解决方案,大量的结果会显示在模板文件中出现大量逻辑的解决方案,某种程度上证实了这种模板和编程语言的混合似乎是ee世界中一种公认的做事方式/鼓励有抱负的开发人员采用这种做法

据我所知,java for the web似乎不再是一个大东西了,如果你看看最流行的web应用程序,几乎没有一个是用java实现的,但上述方面总是让我感到惊讶

所以这里的具体问题是,为什么模板和业务逻辑之间的高度耦合在JavaEE中被认为是良好的实践

您好,
事实上,这不是一个好的做法。我认为,由于各种原因,您可以在Internet上找到的许多代码都是以错误的方式编写的:可能是为了测试某些功能而开发的,而不是部署在生产环境中,没有对松耦合、质量问题等进行评估。此外,对于各种各样的问题,我总是要在网上搜索。大多数时候,我找到了解决方案,它缺少类耦合、不安全的方法等等。要点是:不要把你在互联网上找到的这段代码当作是如何完成某件事情的例子。只需将此代码用作解决问题的建议,并在生产代码中应用该代码的改进版本即可。这不仅适用于JSP或Java,而且更普遍地适用于您可以阅读的每种代码。永远记住,你在谷歌的帮助下找到的代码可能是一个快速的“试错”驱动的代码,永远不会投入生产,也永远不会被更改。作为开发人员,您的工作不是复制和粘贴代码,而是尽可能以最易于维护的方式组织代码。我鼓励你看看坚实的原则。对我来说,坚实的原则加强了解耦和其他方面,有助于编写更好的代码,这在您编写实际产品时非常重要,因为您可能会在将来的很多时候对其进行更改。Internet示例不是为了改进而设计的,只是为了快速理解。

我认为恰恰相反,在JSP页面中包含java代码是一种非常糟糕的做法。有一种特定的技术(JSTL)可以帮助在没有java代码的情况下创建JSP页面。JSTL版本1.0可以追溯到2004年!