天天看點

06-JavaWEB_MVC

目錄

​​一,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标準架構,

如下圖所示:

06-JavaWEB_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的差別與聯系

06-JavaWEB_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頁面的編寫。

繼續閱讀