web服務端開發|第二堂課
文章目錄
第二堂課0924
一、MVC模式介紹
模型-檢視-控制器(MVC)
- 模型(Model)業務邏輯層
- 封裝應用程式狀態
- 響應狀態查詢
- 應用程式功能
- 通知檢視改變
- 檢視(View)表示層
檢視部分不能有任何的業務邏輯
- 解釋模型
- 模型更新請求
- 傳送使用者輸入給控制器
- 允許控制器選擇檢視
- 控制器(controller)控制層
所有的請求,流程控制都是由控制器完成
控制層不做任何資料處理
- 定義應用程式行為
- 使用者動作對映成模型更新
- 選擇響應的檢視
二、MVC第一次實踐
實踐思路
- 建立專案
- 配置啟動類
- 建立對應的包
- controller(控制層)
- service(業務層)
- mapper(資料訪問層)
- domain(資料對映)
- utils(工具類)
開始實驗
原始碼
JavaWeb常用註解
問題總結
-
Cannot resolve symbol ‘xx’ 等傳輸引數失敗
專案中傳輸引數的id、title等是編輯器自動生成的,而不是手動輸入的。(注意他們的形狀、大小、底紋是不一樣的)
-
IDEA中@override註解報錯資訊“Method does not override method from its superclass”
解決辦法 -
Could not autowire. No beans of ‘HelloService’ type found.
參考一
Java Bean
解決辦法
根本解決辦法 -
編譯之後出現:方法不會覆蓋或實現超型別的方法
參考一 -
Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.
在啟動失敗下面會有提示錯誤資訊 -
Whitelabel Error Page
參考一
三、思考總結
MVC模式的Web開發和嵌入式Web開發的差別
嵌入式web開發,頁面中可能既有html程式碼,又有Java程式碼。系統後期維護和擴充套件比較困難。當頁面比較多的情況下,必須啟動伺服器才可以進行除錯。但是相比較於MVC模式,嵌入式web開發比較容易,學習成本比較低。比較適合小規模的WEB應用開發。
MVC開發,將程式碼按照邏輯分成檢視層、模型層、控制層等三層。各層各負其責,互不干涉,各自更新對其他層沒有影響,系統後期維護和擴充套件比較簡單。但是MVC開發模式相對於傳統的開發來說比較負責,所以它比較適合開發中大型的多人協同專案應用。
介面定義和實現的差別及分開寫的好處
Java Web 介面開發簡述
參考
介面的定義
使用interface來定義一個介面。介面定義同類的定義類似,也是分為介面的宣告和介面體,其中介面體由常量定義和方法定義兩部分組成。定義介面的基本格式如下:
[修飾符] interface 介面名 [extends 父介面名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
修飾符:可選,用於指定介面的訪問許可權,可選值為public。如果省略則使用預設的訪問許可權。
介面名:必選引數,用於指定介面的名稱,介面名必須是合法的Java識別符號。一般情況下,要求首字母大寫。
extends 父介面名列表:可選引數,用於指定要定義的介面繼承於哪個父介面。當使用extends關鍵字時,父介面名為必選引數。
方法:介面中的方法只有定義而沒有被實現。
介面的實現
介面在定義後,就可以在類中實現該介面。在類中實現介面可以使用關鍵字implements,其基本格式如下:
[修飾符] class <類名> [extends 父類名] [implements 介面列表]{
}
修飾符:可選引數,用於指定類的訪問許可權,可選值為public、abstract和final。
類名:必選引數,用於指定類的名稱,類名必須是合法的Java識別符號。一般情況下,要求首字母大寫。
extends 父類名:可選引數,用於指定要定義的類繼承於哪個父類。當使用extends關鍵字時,父類名為必選引數。
implements 介面列表:可選引數,用於指定該類實現的是哪些介面。當使用implements關鍵字時,介面列表為必選引數。當介面列表中存在多個介面名時,各個介面名之間使用逗號分隔。
介面分離原則
介面分開寫即方便系統後期進行維護,又方便不同的使用者進行呼叫。
介面分離原則指在設計時採用多個與特定客戶類有關的介面比採用一個通用的介面要好。即,一個類要給多個客戶使用,那麼可以為每個客戶建立一個介面,然後這個類實現所有的介面;而不要只建立一個介面,其中包含所有客戶類需要的方法,然後這個類實現這個介面。
沒有使用介面分離原理的設計如圖1-1所示,存在以下問題:如果Client A類需要改變所使用的Service介面中的方法,那麼不但要改動Service介面和ServiceImp類,還要對ClientB類和ClientC類重新編譯。也就是說,對ClientA的修改會影響ClientB和ClientC,因此應對其進行修改。