保持JSP外部的業務邏輯的優點是什麼,因爲JSP的主要用途是呈現?我們仍然看到在JSP內部編寫業務邏輯,所以我需要知道將業務邏輯從JSP中移出會帶來什麼好處。爲什麼業務邏輯應該移出JSP?
回答
的MVC的主要好處是可以有多個視圖和清潔和分離體系結構& Simplicity
重用性
假設明天你需要在桌面應用程序上運行相同的應用程序。那麼你可以改變視圖。
可測
您可以單元測試你的服務的方法,但鑑於你不能簡單的單元測試邏輯。
可維護性
這是很容易理解的服務方法的代碼,我們也可以改變它/釋放服務API,輕鬆地維護它
版本能力
你可以到你的API給版本和維護標準如果你使用的服務API,而不是查看邏輯
請參見
- 它成爲可重複使用(包括爲其他應用程序,並針對不同的觀點(如JSON API))
- 它需要它遠離設計師(所以它不會妨礙他們,和他們不「T無意中損壞的)
我涉及到的問題/更新文檔不知道,但這可以是原因:
其爲重用目的。
Jsp應該只用於 的演示目的和我們的html設計人員誰後來設計 頁面不知道java編碼會不舒服。 並且在servlet中編寫所有buiseness邏輯讓代碼 可重用。並且爲了在jsp頁面中編寫buiseness邏輯, 是使用scriplets.so爲什麼 利潤較少和額外工作的其他方式。
現在,如果我們使用的JSP頁面的業務邏輯,然後 小腳本會更加JSP頁面導致的servlet 重maintaince cost.The單獨申報業務單位所有上面會 避免內部。
這是Separation of Concerns設計原理的典型應用。
通過分離問題,即通過爲每個問題創建單獨的邏輯單元(主要是類),可以減少更改任何特定單元的原因數量。
SoC的另一個好處是減少了這些單元的平均大小和複雜性。這反過來使您的軟件更易於理解和更改。
此外,使用較小的邏輯單元使得它們更容易進行單元測試,更容易在集成測試中進行模擬,並且在實施變更後更容易修復測試。
我會在這裏發佈的所有非常好的理由添加一個理由。
客戶端技術一直在變化。用戶不想通過桌面,瀏覽器或移動應用來訪問;他們一直想要全部使用它們。因此,如果您將業務邏輯嵌入到一種用戶界面技術中,那麼您可能必須在其他所有類型中複製它。這對維護,可重用性和增加新的業務邏輯都不利。
您不想因爲您決定更改UI技術而必須重新編寫應用程序。
這對安全性也更好。如果業務邏輯進入瀏覽器,用戶有可能看到代碼並找出你在做什麼。
所以你最好在服務器端保持業務邏輯。
只是爲了增加其他同行發佈的良好理由,特別是關於「業務邏輯應該移出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將簡單地返回標題(易讀取爲邏輯是抽象)。
如果業務邏輯與呈現邏輯分離,重用和維護Web應用程序會更好。
假設我有3個JSP頁面,每個頁面都需要執行一些通用的業務邏輯。如果我把業務邏輯放在JSP頁面中,將會有代碼的重複。
- 1. 爲什麼我們不應該在UI層中嵌入業務邏輯?
- 2. 業務邏輯層次Servlet和JSP
- 3. 在Jsp或業務邏輯中排序?
- 4. 業務邏輯
- 5. 業務對象和業務邏輯有什麼區別
- 6. 爲什麼要將業務邏輯分爲三層?
- 7. 該代碼是業務邏輯還是表示邏輯?
- 8. ASP.NET業務邏輯
- 9. 應用層和業務邏輯層之間有什麼區別?
- 10. 業務邏輯應該放在域還是服務中?
- 11. AngularJS控制器應該處理業務邏輯還是表示邏輯?
- 12. 標籤系統應該與數據邏輯還是業務邏輯交互?
- 13. 爲什麼從控制器到模型的業務邏輯?
- 14. 什麼是Business Objects?什麼是業務邏輯?
- 15. 業務邏輯和服務
- 16. 什麼時候應該使用邏輯應用程序而不是Web作業?
- 17. EF:實體是否應該具有業務邏輯?
- 18. 業務邏輯層是否應該實現授權和認證?
- 19. 我應該如何實現複雜的業務邏輯?
- 20. 業務邏輯應該與模型分開嗎?
- 21. MVP中渲染邏輯和業務邏輯之間的準則是什麼?
- 22. 什麼地方適合商業邏輯?
- 23. 業務邏輯+ ASP.NET MVC
- 24. 業務邏輯層設計
- 25. 同步的業務邏輯
- 26. WCF業務邏輯處理
- 27. 業務邏輯設計
- 28. 分離業務邏輯
- 29. EF6和業務邏輯層
- 30. 業務邏輯類命名
相關:http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – BalusC 2011-04-28 16:44:00