手寫SpringMVC框架 2

2021-10-09 05:25:39 字數 2896 閱讀 8082

前端控制器主要是捕獲來自瀏覽器、前端的請求,在伺服器啟動之前初始化spring容器中的元件。自定義dispatcherservlet類繼承httpservlet

/** * 初始化請求對映

*/private

void()

for(map.entry

entryset()

)}}}

public

class

/** * 容器初始化

*/public

void

refresh()

catch

(exception e)

} system.out.

println

("掃瞄的包:"

+ classnames)

; system.out.

println

("ioc容器中的物件:"

+ iocmap);}

}/**

** @param pack 掃瞄包

*/public

void

executescanpackage

(string pack)

else}}

/** * 例項化bean物件

*/public

void

executeinstance()

for(string classname : classnames)

else

if(clazz.

isannotationpresent

(service.

class))

}else}}

catch

(exception e)}}

/** * 實現spring容器中bean的注入(自動裝配)

*/private

void

executeautowired()

throws illegalacces***ception

// 遍歷iocmap

for(map.entry

entry : iocmap.

entryset()

)// 強制訪問類的屬性

declaredfield.

setaccessible

(true);

// 屬性注入 呼叫反射給屬性注入值

declaredfield.

set(bean, iocmap.

get(beanname));

}}}}

}

// 繼承runtimeexception類重寫getmessage方法

public

class

contextexception

extends

runtimeexception

public

contextexception

(throwable cause)

@override

public string getmessage()

}

/**

* 通過控制器類解析請求對映

* @param clazz class

*/private

void

parsehandlerfromcontroller

(class<

?> clazz, object ctl)

// 獲取當前類定義的方法

手寫SpringMVC框架

1.編寫 annotationhandleservlet,作為自定義註解的核心處理器以及負責呼叫目標業務方法和處理使用者請求的 處理器。2.當服務啟動的時候annotationhandleservlet初始化init 方法,進行包掃瞄,把controller類中的方法上的註解與類進行map對映儲存。...

手寫簡易springmvc框架

回顧一遍 準備工作 先寫兩個註解類 controller層的類 並寫上註解 自己寫dispatcherservlet 寫的也不是很完善 在裡面完成 init dopost web.xml配置資訊 只需要配置dispatcherservlet 然後就開始dispatcherservlet的完善 首先是...

手寫django框架

1.寫服務端 import datetime import socket 往網頁內新增內容 方式1 def index 讀取網頁 with open r d untitled python2 7.9 login.html r encoding utf 8 as rb date rb.read 204...