SpringMVC中的名詞解釋、JavaBean、Entity、Pojo、Model的區(qū)別

MVC名詞解釋

這一個章節(jié)說明項目中應該建立哪些package,形成一個良好開發(fā)的習慣,與統(tǒng)一

首先,先了解下三層的一些概念:

MVC是一種設計模式,指的是三層

  • Model 模型層(在開發(fā)中用于存放實體類、持久化對象)

  • View 視圖層(在開發(fā)指 html、jsp 等頁面)

  • Controller 控制層(在開發(fā)中負責業(yè)務邏輯流程的控制)

Model

定義了一些實體類 ,具體對應數(shù)據(jù)庫中的一張表,class 的屬性對應表的字段名,通常開發(fā)中的entity包就是數(shù)據(jù)模型層

View

我自己的理解就是視圖應用程序用戶界面相關部分啦,所以就大概理解為 html,Jsp等頁面,

網(wǎng)上搜集的資料總結(jié)大概描述為:(不對的地方請幫我舉出,謝謝各位看官)

  • View 會從 Model 中取數(shù)據(jù)顯示

    關于這點可能是 html 中慢慢的標簽套表達式,表達式滿天飛

  • Model 提供數(shù)據(jù)的最新狀態(tài)給 View (通知更新)

  • 當Model 變化時,View 負責維護數(shù)據(jù)表現(xiàn)的一致性。

    頁面得刷新,(一次轉(zhuǎn)發(fā))才能變化吧

  • View 還同時將用戶的請求通知控制器

    也就是 ajax 請求吧

Controller

  • 控制器定義了應用程序的行為,供了一系列的接口訪問路徑.

  • 它負責對來自視圖的用戶請求進行解釋,并把這些請求映射成相應的行為,這些行為由模型負責實現(xiàn)

  • 在一個Web應用程序中,它們的表現(xiàn)形式可能是一些來自客戶端的GET或POST的HTTP請求

    @ResponseBody //表示該類下面的所以方法將返回 Json格式的字符串
    public class UserController{
        
        @RequestMapping('/login') //提供的訪問路徑,url: 項目路徑 + /login 訪問
        public String login(){
            /*具體實現(xiàn)邏輯*/
        }
        @RequestMapping('/regiest')
        public String(){
            /*具體實現(xiàn)邏輯*/
        }
    }
    
  • Controller本身不對model數(shù)據(jù)進行操作,只是負責接到任務,控制任務走向,分派任務(dispatch),指定具體的model來操作數(shù)據(jù),通常進行操作的時候(actions)由具體的service來實現(xiàn)

在此處加入了 Vuex 中的數(shù)據(jù)處理的關鍵詞,方便理解

JavaBean、Entity、Pojo、Model的區(qū)別

Model 層還可以聽到一些詞語比如: javaBean,pojo,entity,還是有些區(qū)別的:

  • entity名稱譯為實體,在開發(fā)過程中可以在項目目錄中建立entity包,籠統(tǒng)的指一切實體,

    public class Person{
        private String name;
        private int   age;
        private   String phoneNumber;
        private String address;
    }
    
  • javaBean 意為:

  1. 該類有系列的 private屬性,(所以他的成員屬性用 gettersetter來訪問)
  2. 必須含有一個 公有的無參構(gòu)造方法,(向外暴露 new 實例)
  3. 該類有可能要被 implement,extend(“侵入”)
  4. 這個類應是可序列化的。實現(xiàn)serializable接口。 (關于這一點,我上學的時候好像沒學到??)

大概長下面這種樣子:

 public class Chinese extends Person{
 
     /* 勤勞、勇敢、愛和平的中國人,屬性為私有,值為 true,通過 setter and getter 操作*/
     private Boolean diligent;
     private Boolean brave;
     private Boolean peaceful;
 
     /* 無參數(shù)的構(gòu)造方法,public公開的,
      * 意味著國家將堅定不移走開放路線,深化改革開放,
      * 時時刻刻向世界展示新中國 new
      */
     public Chinese(){
 
     }
   
     /*public 公開的有參數(shù)的構(gòu)造方法,想給新中國添加點光彩嘛?*/
     public Chinese(Boolean diligent,Boolean brave,Boolean peaceful){
         this.diligent = diligent;
         this.brave = brave;
         this.peaceful = peaceful;
     }
 
     public Boolean getDiligent() {
         return diligent;
     }
 
     public void setDiligent(Boolean diligent) {
         this.diligent = diligent;
     }
 
     public Boolean getBrave() {
         return brave;
     }
 
     public void setBrave(Boolean brave) {
         this.brave = brave;
     }
 
     public Boolean getPeaceful() {
         return peaceful;
     }
 
     public void setPeaceful(Boolean peaceful) {
         this.peaceful = peaceful;
     }
 }

Chinese 繼承了 Person 類,也具有 Person 的屬性

  • pojo(plain old java object)樸素的、簡單的 java 對象 。
  1. 類的成員是私有的,且有一系列的 setterand getter方法來提供訪問
  2. 它沒有繼承 (extends)也沒有 實現(xiàn)(implements) 任何的 class 或者 interface 更沒有被其它東西而“侵入”

總結(jié):

從比較可以看出, pojo嚴格遵循 “樸素” 標準,僅僅只是作為數(shù)據(jù)的臨時載體,不具有業(yè)務邏輯處理能力

JavaBean他是 一套 Java Object的編寫規(guī)范,他除了一些該有的 方法外,往往還含有其它 邏輯方法在其中

Spring 通過 依賴注入 與 切面編程,使得程序之間結(jié)構(gòu)、分工明確,讓代碼不再“緊耦合”,在使用了 Pojo對象后我們很少用 new 關鍵詞來產(chǎn)生對象

正是Spring 通過Java的反射機制,能 動態(tài)的向某個對象提供它所需要的其他對象,使得代碼更簡潔

從一個簡單的 MVC 業(yè)務流程開始

我在此描述一個登錄的業(yè)務流程,需要注意的是,平常開發(fā)過程中,我們并不只是用到了MVC 三層的分類,還可能有其他層,比如Service,Dao / Mapper下面流程中的描述中即將出現(xiàn)

  1. web視圖發(fā)送一個請求 去往一個接口,比如/login

  2. 找到對應的 Controller,在spring 中具體路徑體現(xiàn)為RequestMapping("/login")

  3. 訪問這個路徑,執(zhí)行該``RequestMapping`中的邏輯

  4. Controller 找到對應的Service

  5. Service找到對應的Dao

  6. Dao聯(lián)合Model操作數(shù)據(jù)庫

  7. 返回結(jié)果給Controller

  8. Controller對結(jié)果進行處理

Dao層為數(shù)據(jù)訪問層,比較基礎的操作,具體到對于某個表、某個實體的增刪改查,操作數(shù)據(jù)庫,也就是Mapper層(一些SQL語句)

注意:在比較原生的開發(fā)中 我們使用Dao,而關鍵詞Mapper是在Mybatis、Hibernate這樣的SQL映射工具出現(xiàn)后常常見到的

service層為業(yè)務邏輯層(具體做事的層),接受Controller層的委派,跟Dao / Mapper打交道,交流完再將結(jié)果反饋給Controller

元旦快樂!今年也要進步!

--------------------------------轉(zhuǎn)載請注明出處---------------------------------

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容