2011-04-28 60 views
18

保持JSP外部的業務邏輯的優點是什麼,因爲JSP的主要用途是呈現?我們仍然看到在JSP內部編寫業務邏輯,所以我需要知道將業務邏輯從JSP中移出會帶來什麼好處。爲什麼業務邏輯應該移出JSP?

+1

相關:http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – BalusC 2011-04-28 16:44:00

回答

14

MVC的主要好處是可以有多個視圖和清潔和分離體系結構& Simplicity


重用性

假設明天你需要在桌面應用程序上運行相同的應用程序。那麼你可以改變視圖。


可測

您可以單元測試你的服務的方法,但鑑於你不能簡單的單元測試邏輯。


可維護性

這是很容易理解的服務方法的代碼,我們也可以改變它/釋放服務API,輕鬆地維護它


版本能力

你可以到你的API給版本和維護標準如果你使用的服務API,而不是查看邏輯


請參見

2
  1. 它成爲可重複使用(包括爲其他應用程序,並針對不同的觀點(如JSON API))
  2. 它需要它遠離設計師(所以它不會妨礙他們,和他們不「T無意中損壞的)
1

我涉及到的問題/更新文檔不知道,但這可以是原因:

其爲重用目的。

Jsp應該只用於 的演示目的和我們的html設計人員誰後來設計 頁面不知道java編碼會不舒服。 並且在servlet中編寫所有buiseness邏輯讓代碼 可重用。並且爲了在jsp頁面中編寫buiseness邏輯, 是使用scriplets.so爲什麼 利潤較少和額外工作的其他方式。

現在,如果我們使用的JSP頁面的業務邏輯,然後 小腳本會更加JSP頁面導致的servlet 重maintaince cost.The單獨申報業務單位所有上面會 避免內部。

9

這是Separation of Concerns設計原理的典型應用。

通過分離問題,即通過爲每個問題創建單獨的邏輯單元(主要是類),可以減少更改任何特定單元的原因數量。

SoC的另一個好處是減少了這些單元的平均大小和複雜性。這反過來使您的軟件更易於理解和更改。

此外,使用較小的邏輯單元使得它們更容易進行單元測試,更容易在集成測試中進行模擬,並且在實施變更後更容易修復測試。

+4

和更容易進行單元測試。 – Codemwnci 2011-04-28 12:02:40

+0

@Codemwnci +1肯定 – kostja 2011-04-28 12:05:26

+0

@Codemwnci如果我把你的評論加入到答案中,請介意一下嗎? – kostja 2011-04-28 12:06:33

3

我會在這裏發佈的所有非常好的理由添加一個理由。

客戶端技術一直在變化。用戶不想通過桌面,瀏覽器或移動應用來訪問;他們一直想要全部使用它們。因此,如果您將業務邏輯嵌入到一種用戶界面技術中,那麼您可能必須在其他所有類型中複製它。這對維護,可重用性和增加新的業務邏輯都不利。

您不想因爲您決定更改UI技術而必須重新編寫應用程序。

這對安全性也更好。如果業務邏輯進入瀏覽器,用戶有可能看到代碼並找出你在做什麼。

所以你最好在服務器端保持業務邏輯。

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將簡單地返回標題(易讀取爲邏輯是抽象)。

0

如果業務邏輯與呈現邏輯分離,重用和維護Web應用程序會更好。

假設我有3個JSP頁面,每個頁面都需要執行一些通用的業務邏輯。如果我把業務邏輯放在JSP頁面中,將會有代碼的重複。