前端控制器主要是捕獲來自瀏覽器、前端的請求,在伺服器啟動之前初始化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...