帶你一步步用MVC架構(gòu)實(shí)現(xiàn)簡單的用戶管理系統(tǒng)


用戶管理系統(tǒng),實(shí)現(xiàn)簡單的用戶管理,有包括普通用戶、管理員;功能包括添加用戶,刪除用戶,查詢用戶信息,更改用戶信息等等,主要是通過項(xiàng)目的方式,讓大家一步步數(shù)據(jù)系統(tǒng)的設(shè)計(jì)流程,以及在java開發(fā)中用的比較多的MVC架構(gòu)模式,走向老鳥的第一步!


第一步,先把系統(tǒng)設(shè)計(jì)的包分好

基本系統(tǒng)都會(huì)設(shè)計(jì)以下包:

  • 共通包,用于存放公共的操作,例如常量、異常、工具包等等;
共同包命名規(guī)則:
    公司名.項(xiàng)目名.common.業(yè)務(wù)邏輯模塊
1479115274702.png
  • 項(xiàng)目包
命名規(guī)則:
    公司名.項(xiàng)目名.具體模塊.業(yè)務(wù)邏輯名
1479115489494.png

項(xiàng)目采用的是 MVC 架構(gòu),

什么是MVC架構(gòu)?

MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設(shè)計(jì)創(chuàng)建 Web 應(yīng)用程序的模式:

  • Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)。
  • View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。
  • Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)。

如下圖解:


MVC組件類型的關(guān)系和功能

MVC組件類型的關(guān)系和功能

MVC組件類型的關(guān)系和功能

對應(yīng)于項(xiàng)目中,可以簡單理解為用各種功能的包(package)對照著 MVC 三層架構(gòu)進(jìn)行分層,具體如下:

  • view 包即 V(視圖層);
  • controller 包 即 C(控制器);
  • 對于 M(模塊層)包括 domain 包(Bean模型層)、dao 包(DAO持久層)和 service 包(Service業(yè)務(wù)層);

項(xiàng)目總體的包如下:

1479115604054.png

第二步,先從共通包開始,創(chuàng)建內(nèi)容

  • exception

存放的是自定義異常,可根據(jù)業(yè)務(wù)來定義相應(yīng)的可拋出的異常:

1479274793766.png

自定義異常類DaoException

將數(shù)據(jù)層異常包裝成自定義異常,進(jìn)行處理;
繼承RuntimeException
構(gòu)造方法一,默認(rèn)的構(gòu)造方法;
構(gòu)造方法二,重寫異常詳細(xì)信息;
構(gòu)造方法三,重寫異常詳細(xì)信息和異常產(chǎn)生的原因;
構(gòu)造方法四,重寫異常產(chǎn)生的原因;

自定義異常類ServiceException

將業(yè)務(wù)層發(fā)生的異常包裝成自定義異常;
繼承自RuntimeException

自定義異常類DateException

將日期轉(zhuǎn)換時(shí)發(fā)生的異常包裝成自定義異常;
繼承自ServiceException

  • util
1479276734605.png

有許多功能,比如數(shù)據(jù)庫連接、事務(wù)操作、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)驗(yàn)證、文件上傳下載、文件拷貝等,在多個(gè)方法或者多個(gè)類中多次用到,因此設(shè)計(jì)成方法,放到工具類中;

工具類中的方法為了便于其他類訪問,都定義成靜態(tài)static方法;

數(shù)據(jù)庫工具類DBUtil

一個(gè)封裝好的Oracle數(shù)據(jù)庫工具類;

1479275854838.png

日期轉(zhuǎn)換工具類

1479275897939.png

獲取控制臺(tái)輸入類ScannerUtil

由于本程序采用的是通過控制臺(tái)進(jìn)行輸入輸出的方式,所以需要一個(gè)工具類,方便操作;

1479276077918.png

對于dao包和constant,分別存放的是Dao工廠類和項(xiàng)目中涉及到的公共常量,但由于項(xiàng)目簡單,故把功能整合到各自的類中了;


以上就是項(xiàng)目的公共部分


第三步,根據(jù)MVC來進(jìn)行分層操作

M(模型層)

包括Bean模型層、dao持久層、Service業(yè)務(wù)層

1479277171387.png
  • domain
1479276756480.png

為什么要設(shè)計(jì)實(shí)體類?

把相關(guān)信息用一個(gè)實(shí)體類封裝后,在程序中可以把實(shí)體類作為參數(shù)傳遞,更加方便;

對對象實(shí)體的封裝,體現(xiàn)OO思想;

實(shí)體類:

1、一般實(shí)體類對應(yīng)于一個(gè)數(shù)據(jù)庫表;
2、實(shí)體類有屬性和方法,屬性對應(yīng)于數(shù)據(jù)庫表中的字段,主要有gettersetter方法;
3、屬性一般是private類型,方法是public類型;

實(shí)體類User

對應(yīng)于數(shù)據(jù)庫中的用戶表

1479276639461.png
1479276654618.png

實(shí)體類DataPage

分頁時(shí)所需要的信息封裝成的實(shí)體類

1479276828503.png
  • dao
1479278231832.png

DAO層設(shè)計(jì)首先是設(shè)計(jì)DAO接口,再定義此接口的實(shí)現(xiàn)類,然后就可以在模塊中調(diào)用此接口來進(jìn)行數(shù)據(jù)業(yè)務(wù)的處理;

DAO層所定義的接口里的方法都大同小異,這是由于DAO層對數(shù)據(jù)庫的操作來決定的,對數(shù)據(jù)庫操作,我們基本要做的的是增、刪、改、查等方法。因而DAO基本上都是要涵蓋這些方法對應(yīng)的操作,除此之外,可以定義一些自定義的特殊的對數(shù)據(jù)庫訪問的方法;

一般命名為xxxDAO

接口UserDAO

1479277604370.png

接口實(shí)現(xiàn)類UserDAOImpl

1479277647683.png
  • service
1479278213942.png

Service層可以考慮設(shè)計(jì)接口,再設(shè)計(jì)實(shí)現(xiàn)類,也可以通過單例模式進(jìn)行設(shè)計(jì);

Service層的業(yè)務(wù)實(shí)現(xiàn),具體要調(diào)用到已定義的DAO層的接口,封裝成Service的業(yè)務(wù)邏輯,有利于通用的業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性,程序顯得非常簡潔;

Service建立在DAO之上,建立了DAO層之后才可以建立Service層;

每個(gè)模型都有一個(gè)Service層接口或單例類,每個(gè)類分別封裝各自的業(yè)務(wù)處理方法;

一般命名為xxxService

Service層接口

1479277987226.png

Service層接口層實(shí)現(xiàn)類

1479278025150.png

C(控制器)

為什么要設(shè)計(jì)控制器?

1、控制器可以將視圖和業(yè)務(wù)邏輯分開,便于后期的擴(kuò)展和復(fù)用;

2、控制層主要是根據(jù)視圖層用戶發(fā)出的請求去調(diào)用業(yè)務(wù)層相應(yīng)的業(yè)務(wù)處理方法;

  • controller
1479278246120.png

UserController類

1479278280432.png

V(表現(xiàn)層/s視圖層)

為什么要設(shè)計(jì)表現(xiàn)層?

1、表現(xiàn)層是系統(tǒng)用用戶交互的接口,用戶通過表現(xiàn)層了解系統(tǒng)的功能,通過表現(xiàn)層和系統(tǒng)進(jìn)行交互;

2、表現(xiàn)層單獨(dú)分離出來,是為了便于復(fù)用和擴(kuò)展;

  • view
1479278513266.png

BaseFrame接口

表現(xiàn)層都實(shí)現(xiàn)該接口;

因?yàn)闊o論是普通用戶還是管理員都有頁面顯示、添加、更新、查詢操作;

1479278609534.png

show方法,該業(yè)務(wù)對應(yīng)的頁面即對應(yīng)的用戶操作;
addShow犯方法,用戶添加操作的頁面;
searchShow方法,用戶查詢操作的頁面;
updateShow方法,用戶更新操作的頁面;

IndexFrame類

用戶登錄和注冊頁面

1479278899785.png

show方法,重寫該方法,顯示注冊和登錄操作選項(xiàng);
addShow犯方法,重寫該方法用戶注冊頁面;
searchShow方法,重寫該方法,空方法;
updateShow方法,重寫該方法,空方法;

NormalFrame類

普通用戶操作頁面

1479278927769.png

show方法,重寫該方法,顯示普通用戶操作選項(xiàng);
searchShow方法,重寫該方法,查找個(gè)人信息;
updateShow方法,重寫該方法,更新個(gè)人信息;

AdminFrame類

管理員操作頁面

1479279081590.png

show方法,重寫該方法,顯示管理員操作選項(xiàng);
addShow犯方法,繼承該方法,用戶添加的頁面;
searchShow方法,重寫該方法,查詢用戶信息;
updateShow方法,更新用戶信息;
delShow方法,刪除用戶信息;
loginSuccShow方法,登錄成功顯示頁面;
listShow方法,顯示list中的數(shù)據(jù);


以上就是整個(gè)項(xiàng)目的設(shè)計(jì)過程;

演示

result.gif

下面是項(xiàng)目的源代碼:

UserManagerSystem 源碼

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

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

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