設計自己的MVC框架

2022-09-06 01:15:12 字數 3170 閱讀 3635

publicinte***ceaction 

比如,我們要實現乙個登陸系統(demo的例子),loginaction驗證使用者名稱和密碼,如果正確,返回success頁面,如果登陸失敗,返回fail頁面:

publicclassloginactionimplementsactionelse

returnactionforward.fail;    //否則,返回fail

} 2.還是先來看下兩個模型:actionforward和actionmodel,沒什麼東西,屬性以及相應的getter,setter方法:

/**

* 類說明:轉向模型

* @author dennis

*

* */

publicclassactionforward 

publicactionforward(string

name,string

viewurl) 

//...name和viewurl的getter和setter方法

}   

我們看到actionforward預先封裝了success和fail物件。

publicclassactionmodel 

publicactionmodel(string

path,string

classname,

map<string

, actionforward> forwards) 

//...相應的getter和setter方法     

}

3。知道了兩個模型是什麼樣,也應該可以猜到我們的配置檔案大概是什麼樣的了,與struts的配置檔案格式類似:

<?xml  version="1.0" encoding="utf-8"?>

"/login"

class="com.strutslet.demo.loginaction">

"success" url="hello.jsp"/>

"fail" url="fail.jsp"/>

path是在應用中將被呼叫的路徑,class指定了呼叫的哪個action,forward元素指定了轉向,比如我們這裡如果是success就轉向hello.jsp,失敗的話轉向fail.jsp,這裡配置了demo用到的loginaction。

4。dispacher介面,主要是getnextpage方法,此方法負責獲得下乙個頁面將導向**,提供給前端控制器**。

publicinte***cedispatcher 

5。5。原先書中實現了乙個workflow的dispatcher,按照順序呼叫action,實現工作流呼叫。而我們所需要的是根據請求的path呼叫相應的action,執行action的execute方法返回乙個actionforward,然後得到actionforward的viewurl,將此viewurl提供給前端控制器**,看看它的getnextpage方法:

returnactionforward.getviewurl();      //返回actionforward的viewurl

}

6。前端控制器(frontcontroller),它的任務我們已經很清楚,初始化配置檔案;儲存所有action到servletcontext供整個框架使用;得到發起請求的path,提供給dispachter查詢相應的action;呼叫dispatcher,執行getnextpage方法得到下乙個頁面的url並**:

publicvoidinit()throwsservletexceptioncatch(exception

e) //例項化dispacher

trycatch(exception

e) .....

doget()和dopost方法我們都讓它呼叫process方法:

7。最後,web.xml的配置就非常簡單了,配置前端控制器,提供啟動引數(配置檔案所在位置,為空就查詢/web-inf/下面的strutslet-config.xml檔案),我們把所有以action結尾的請求都交給frontcontroller處理:

strutsletcontroller

class>com.strutslet.core.frontcontrollerclass>

0

strutsletcontroller

*.action

最後,讓我們看看整個框架圖:

設計自己的MVC框架

事實是最近讀 j2ee設計模式 講述表達層模式的那幾章,書中有乙個前端控制器 command模式的workflow例子,就琢磨著可以很簡單地擴充套件成乙個mvc框架。花了乙個下午改寫了下,對書中所述的理解更為深入。我想這也許對於學習和理解設計模式,以及初次接觸struts等mvc框架的人可能有點幫助...

打造自己的MVC框架

打造自己mvc框架 1 mvc概念 model view controller 控制器 2 psr規範 psr1 基礎程式設計規範 psr2 編碼風格規範 psr3 日誌介面規範 psr4 自動載入規範 3 命名規範 檔名和類名相同 大駝峰原則 indexcontroller 命名空間名和資料夾名相...

自己構思的MVC框架

我除了是乙個很懶惰的人,更是乙個很吝嗇的人,更加是乙個不願被約束的人。在挑選開源表示層框架時,因為懶惰,我要求 1.好學,我不希望花乙個月的時間去學習如何配置 2.好用,要真的能夠提高開發的效率,而不是把自己繞進去 因為吝嗇,我要求 3.不要過於龐大,過多的依賴其他專案,占用過多的記憶體 4.執行效...