業務層的jsp
回答
通常的原因是關注點分離。您應該輕鬆修改演示文稿而不影響業務層。
可重用性和可維護性是一些巨大的問題。
考慮下面的情況;
假設你想創建一個iPhone 版本的應用程序,你必須 到端口的所有業務邏輯 的iPhone,現在讓我們擁有了 申請一個Eclipse RCP前端和基於閃存;然後與基於Python的系統集成。
由於業務邏輯和 呈現在同一個文件, 創意Web開發有 學習一些Java,如果他要 不 打破了應用程序創建的最佳接口。
如果您製作的應用程序超過5頁,混合邏輯和演示文稿可能會讓您的生活更加艱難。但是,這是我的一個不受歡迎的觀點 - 對於小型應用程序(甚至是中型應用程序),只需一個「知道他的代碼」的開發人員,就可以將JSP用於buisness邏輯。它可能是jsps放在/action/
文件夾中,稍後重定向到演示文件夾,或者它可能與請求來自的jsps相同。我舉了一個例子 - 在開發實踐之初,我基於網絡策略遊戲幾乎完全基於自我發佈jsps。那是5年前。幾個星期前我看了一下我的代碼庫,我可以理解所有的東西。所以,如果你剛剛開始,而且你不想從一個能讓你的學習曲線更陡峭的大框架開始,並且你不希望你的項目變得非常大或者變成商業化的(旁註:我的商業變得商業化然後隨意使用jsps作爲業務邏輯,但需要注意的是在常見情況下這不是一個好習慣。
幾個原因:
- 重用性:你不能再使用小腳本。
- 可替換性:不能使腳本抽象化。
- OO能力:你不能使用繼承/組合。
- 可調試性:如果scriptlet中途拋出一個異常,你得到的只是一個空白頁面。
- 可測試性:scriptlet不是單元可測試的。
- 可維護性:每個saldo需要更多的時間來維護混合/混亂的代碼邏輯。
還有更多,但它歸結爲腳本是壞習慣。
您可以在表示層JSTL和EL做相當多的工作。如果您認爲這兩種方法都不可行,並且您不得不抓取scriptlet,那麼代碼邏輯最終屬於一個真正的Java類。您可以使用一個Servlet
類來控制/預處理/後處理請求,您可以使用Filter
類來過濾請求,您可以使用DAO
類來完成數據庫交互,可以使用Javabean
類來存儲/傳輸/訪問數據,您可以使用Domain
類作爲業務邏輯,您可以使用Utility
類作爲靜態工具。
對於什麼是值得的,大約半年後,我已經發布了更詳細的回答這個問題:http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files – BalusC 2011-02-24 17:17:22
- 1. 業務邏輯層次Servlet和JSP
- 2. 業務層3
- 3. 業務層或表示層
- 4. 業務層業務層的程序邏輯
- 5. 業務層設計
- 6. n層業務/服務層設計
- 7. 三層架構中的業務層
- 8. 業務層VS的SQL Server
- 9. 具有n層業務服務器的N層Web服務器
- 10. 業務層與服務層的服務引用
- 11. ASP.NET企業架構:業務層
- 12. EF6和業務邏輯層
- 13. 批和業務層通信
- 14. 如何實現業務層
- 15. MVVM和業務邏輯層
- 16. 業務邏輯層設計
- 17. MVC驗證和業務層
- 18. 將業務層傳遞給WCF服務
- 19. struts動作類和業務服務層
- 20. DTO VS在WCF層的業務對象
- 21. 業務層模塊的分離
- 22. asp.net應用程序中的業務層
- 23. db或前一層的業務規則
- 24. 業務層中的本地化
- 25. 模型層上的業務規則
- 26. 業務層授權的最佳實踐?
- 27. 業務層面的延遲加載
- 28. 數據庫層中的業務邏輯
- 29. 基於角色的業務層授權
- 30. ASP.NET MVC中的業務和數據層
假設我不經常改變它 – Harish 2009-12-02 07:45:43
是習慣的生物它總是很好地遵循最佳實踐,因爲它們變得注入我們 – n002213f 2009-12-02 08:04:23