关于WEB三层架构的思考
1.MVC設計思想
MVC程序設計思想是眼下比較流行的WEB開發的模式,當中,M(model)是模型。即JavaBean,用來封裝和保存數據;V(view)是視圖,即JSP。用來顯示內容;C(controller)是控制器,即servlet,用來處理業務邏輯。大致流程是這種:編寫一個JSP頁面用來獲取信息(如登錄頁面獲取用戶登錄名、password)。并將信息封裝到JavaBean中,提交到server端由WEB容器將數據封裝成request請求。交給servlet來處理。
servlet從請求中獲取用戶信息到數據庫中查詢。并返回對應的結果(登錄成功或失敗),再將結果封裝成response響應發送給client瀏覽器,瀏覽器依據response頭和其它信息進行對應的顯示。
如圖:
MVC設計思想將數據封裝、顯示和業務處理分開,JavaBean、JSP和servlet都僅僅做自己最擅長的事,模塊化使整個過程更加清晰,符合Java低耦合的思想,提高代碼的靈活性,易于擴展和維護。
詳細分工例如以下圖:
2.WEB三層架構
從上圖能夠看出。數據訪問層中JavaBean既要存儲數據內容又要獲取數據內容,這違背了單一職責原則。
我們希望JavaBean僅僅是單純的用來封裝數據。其它的交給別人來做,因此在WEB開發中,將數據訪問層進一步細化。用JavaBean來封裝數據,而數據是持久化存儲在數據庫中(也能夠是XML等文件里)。通過DAO(Data Access Object)數據訪問對象來查詢數據庫(或解析XML文件等)。有時,視圖層不一定僅僅有JSP。,有些內容須要通過servlet技術顯示,如登錄頁面的驗證碼。當業務邏輯過多時,業務邏輯層就會顯得特別臃腫。不利于擴展和維護。這時能夠將業務功能抽象成接口,詳細功能由子類實現。
那么問題來了,怎么知道哪個類去處理哪個業務邏輯呢?解決方式是定義一個核心servlet。用來接收全部的client請求,通過推斷將請求交給相應的業務處理子類去處理。這里可參見Struts2的實現原理。這里不再贅述。
這樣,業務邏輯層就分成了兩部分:用于顯示的servlet和分發業務的servlet。例如以下圖:
3.真實案例
然而。真正開發中,以上并非終于的解決方式。
拿一個實際案例來說。開發一個簡單的B2C電子交易平臺系統(功能包含:用戶登錄、注冊、郵箱驗證、查看商品、加入商品、購物車、下單、在線支付等),包結構例如以下:
~~未完待續~~
以上均為個人觀點。如有疑問。歡迎交流~~
總結
以上是生活随笔為你收集整理的关于WEB三层架构的思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thread class vs Runn
- 下一篇: 根据需要通过代码的方式加载js文件