为什么应该将业务逻辑移出JSP?

时间:2011-04-28 11:48:59

标签: java jsp design-patterns java-ee servlets

将业务逻辑保留在JSP之外有什么好处,因为JSP主要用于表示?我们仍然看到在JSP中编写业务逻辑,因此我需要知道通过将业务逻辑移出JSP而获得的好处。

7 个答案:

答案 0 :(得分:14)

MVC的主要好处是你可以拥有多视图和干净且分离的架构& Simplicity


可重用性

假设您明天需要在桌面应用上运行相同的应用。然后你可以改变视图。


可测试性

您可以对服务方法进行单元测试,但不能简单地从视图中单元测试逻辑。


<强>可维护性

很容易理解Service方法中的代码,我们也可以更改它/发布服务api并轻松维护它


版本能力

如果使用服务API而不是查看逻辑,则可以为API提供版本并维护与问题/更新相关的标准文档


另见

答案 1 :(得分:9)

这是Separation of Concerns设计原则的典型应用。
通过分离关注点,即通过为每个问题创建单独的逻辑单元(主要是类),可以减少原因改变任何特定单位。

SoC的另一个好处是减少这些单元的平均尺寸和复杂性。这反过来又使您的软件更易于理解和更改。

另外,具有较小的逻辑单元使得它们更容易进行单元测试,更容易在集成测试中进行模拟,并且在更改之后更容易修复测试。实施

答案 2 :(得分:3)

我将为这里发布的所有非常好的内容添加一个理由。

客户端技术一直在变化。用户不希望通过桌面,浏览器或移动应用程序;他们想要一直使用所有这些。因此,如果您将业务逻辑嵌入到一种类型的用户界面技术中,您可能必须在所有其他技术中复制它。这对于维护,可重用性和添加新的业务逻辑都是不利的。

您不想因为决定更改UI技术而重新编写应用程序。

安全性也更好。如果业务逻辑归结为浏览器,则用户可能会看到代码并找出您正在做的事情。

所以你最好在服务器端保持业务逻辑。

答案 3 :(得分:2)

  1. 它变得可重用(对于其他应用程序和不同的视图(例如JSON API))
  2. 它远离了设计师(所以它不会妨碍他们,并且他们不会意外地破坏它)

答案 4 :(得分:1)

我不确定但这可能是原因:

用于可重用性目的。

Jsp应该只用于 演示目的和我们的html设计师,后来设计 页面不知道java编码会不舒服。 并在servlet中编写所有buiseness逻辑来代码 reusable.and用于在jsp页面中编写buiseness逻辑 是一些其他的方式,如使用scriplets.so为什么这项工作 利润减少,工作量增加。

现在,如果我们正在使用jsp页面进行业务逻辑 scriptlet将更多地位于导致的JSP页面内部 繁重的维护成本。业务部门的servlet单独声明将 避免以上所有。

答案 5 :(得分:0)

只是为了增加其他同行发布的好理由,特别是“业务逻辑应该从JSP中移出”。

简而言之,在工作中我们有很多JSP,其中业务逻辑已经全部结束,看起来非常混乱。存在从会话/请求获取对象并执行某些检查的逻辑。一个简单的例子是根据JSP中的某些条件构建不同的页面标题。

我们最终如何移动这个逻辑是为了引入一个Page Builder / Composer对象,该对象接收构建特定页面的所有必要细节,并检查和设置页面bean对象中的所有正确字段。然后根据请求设置该页面bean对象。这意味着您在JSP上拥有的所有先前逻辑现在都移动到页面构建器/编写器对象,然后最重要的是您可以将单元测试写入测试!如果在页面bean中设置了正确的值。

final SimplePageBuilder pageBuilder = new SimplePageBuilder(object1);
request.setAttribute("TestBean", pageBuilder.buildPage());

buildPage方法将返回页面bean对象,在jsp中,一个简单的例子getTitle将只返回标题(在抽象逻辑时易于阅读)。

答案 6 :(得分:0)

如果业务逻辑与表示逻辑分离,则最好重用和维护Web应用程序。

假设我有3个JSP页面,每个页面都需要执行一些常见的业务逻辑。如果我将业务逻辑放在JSP页面中,则会出现重复的代码。