目錄
一,MVC介紹
1,M、V、C
2,bean
二,三層架構
1,介紹
2,三層架構和MVC的差別與聯系
三,MVC之Model開發
四,MVC之Controller開發
五,MVC之View開發
一,MVC介紹
寫Java Web項⽬時會發現,⼀個中型或者⼤型項⽬ 随着代碼的增多,會發現:代碼既可以寫在src⽬錄下,也可以寫在WebContent⽬錄下。src下可以建很多包 ,WebContent下可以建很多⽂件夾。
是以問題就來了:⼀個新的類 到底往哪個⽬錄下的哪個⽂件夾⾥寫?
此時解決辦法就是:需要⼀個模式去規範,到底哪個類該往哪⾥寫。
1,M、V、C
Web MVC中的M(模型)-V(視圖)-C(控制器)概念和标準MVC概念⼀樣,我們再看⼀下Web MVC标準架構,
如下圖所示:
在Web MVC模式下,模型⽆法主動推資料給視圖,如果⽤戶想要視圖更新,需要再發送⼀次請求(即請求-響應模型)。
- M(Model) 模型:應⽤程式的核⼼功能,管理這個子產品中⽤的資料和值(bean,dao);
- V(View )視圖:視圖提供模型的展示,管理模型如何顯示給⽤戶,它是應⽤程式的外觀;(jsp/html)
- C(Controller)控制器:對⽤戶的輸⼊做出反應,管理⽤戶和視圖的互動,是連接配接模型和視圖的樞紐。(servlet/service)
MVC⽤于将web(UI)層進⾏職責解耦
說明:mvc設計模式(不屬于23種設計模式)
2,bean
JavaBeans :是Java中⼀種特殊的類(換⾔之:JavaBean就是⼀個Java類).
⼀個Java類 ,滿⾜以下要求,則可稱為⼀個JavaBean
- a. public修飾的類,提供public ⽆參構造⽅法
- b. 所有屬性 都是private
- c. 提供getter和setter⽅法
從使⽤層⾯來看,JavaBean分為2⼤類:
- a. 封裝業務邏輯的JavaBean(eg:LoginDao.java 封裝了登入邏輯)
- b. 封裝資料的JavaBean(實體類:eg:Student.java Vadio.java 。往往對應于資料庫中的⼀張表,即資料庫中有個Student表,項⽬中就有個Student.java類)通常:表名=類名,列名=屬性名
JavaBean是⼀個可以重複使⽤的元件,通過編寫⼀個元件來實作某種通⽤功能,“⼀次編寫、任何地⽅執⾏、任何地⽅重⽤”。
二,三層架構
1,介紹
三層架構 通常意義上的三層架構就是将整個業務應⽤劃分為:表現層(UI)、業務邏輯層(BLL)、資料通路層(DAL)。區分層次的⽬的即為了“⾼内聚,低耦合”的思想。
- 表現層(UI):通俗講就是展現給⽤戶的界⾯,即⽤戶在使⽤⼀個系統的時候他的所⻅所得。jsp/html
- 業務邏輯層(BLL):針對具體問題的操作,也可以說是對資料層的操作,對資料業務邏輯處理。servlet,service
- 資料通路層(DAL):該層所做事務直接操作資料庫,針對資料的增添、删除、修改、更新、查找等。dao
表現層實作的代表作品是Struts,springmvc架構,
業務層實作的代表作品是Spring,
持久層實作的代表作品是Hibernate,mybatis。
層就相當于⼀個⿊盒⼦,我們不⽤知道它内部怎麼實作,隻需要知道如何去調⽤它就⾏了。每層隻與上下相鄰的兩層打交道。當⼀層内部由于技術變遷發⽣變化時,隻要接⼝不變,其他層不⽤做任何改變。分層之後靈活性提⾼,也便于團隊分⼯開發。
2,三層架構和MVC的差別與聯系
MVC是 Model-View-Controller,嚴格說這三個加起來以後才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進⾏了分化,分成了控制器、視圖、實體三個部分,控制器完成⻚⾯邏輯,通過實體來與界⾯層完成通話;⽽C層直接與三層中的BLL進⾏對話。
MVC可以是三層中的⼀個表現層架構,屬于表現層。三層和mvc可以共存。
MVC主要⽤于表現層,3層主要⽤于體系架構,3層⼀般是表現層、中間層、資料層,其中表現層⼜可以分成M、V、C,(Model View Controller)模型-視圖-控制器
三層架構的分層模式是典型的上下關系,上層依賴于下層。但MVC作為表現模式是不存在上下關系的,⽽是互相協作關系。即使将MVC當作架構模式,也不是分層模式。MVC和三層架構基本沒有可⽐性,是應⽤于不同領域的技術。
三層是基于業務邏輯來分的,⽽MVC是基于⻚⾯來分的。
三層架構是典型的架構模式(Architecture Pattern)。MVC是表現模式(Presentation Pattern)。
三,MVC之Model開發
主要将項目分為幾個部分:
- bean(存放實體類。命名與資料庫中的表一緻,屬性名即列名,包含無參、有參構造方法)
- dao(負責與資料庫進行直接的互動。分為接口和實作類。命名一般為實體類+Dao、實體類+Dao+Impl)
- service(提供各項服務。分為接口和實作類。命名一般為實體類+Service、實體類+Service+Impl)
- servlet(接受請求,并調用相關服務)
- util(包含一些工具類,比如資料庫連接配接、分頁等等)
調用順序:servlet-》service-》dao(bean貫穿整個流程)
Module層一般包括service、dao、bean。
四,MVC之Controller開發
一般指Servlet層。包括以下三方面:
- 接受請求參數;
- 調用service層方法;
- 跳轉頁面(需要将背景資料傳遞給前台,是以建議使用setAttribute+轉發的方式,避免丢失資料);
五,MVC之View開發
就是jsp頁面的編寫。