**:
回顧一遍:
準備工作:先寫兩個註解類
controller層的類 並寫上註解
自己寫dispatcherservlet 寫的也不是很完善 在裡面完成 init() dopost()
web.xml配置資訊 只需要配置dispatcherservlet
然後就開始dispatcherservlet的完善
首先是init()方法
第一步: 獲取帶有controller註解的類
現在掃瞄這個包的類 ,這個方法我也沒有看懂大概意思就是去將com.jzw.controller通過字元的轉變變成乙個路徑,然後通過這個路徑去掃瞄檔案並獲取檔名
if ("file".equals(protocol))
得到了所有的類之後去掃瞄這些類上有沒有controller的註解
mycontroller mycontroller = classinfo.getdeclaredannotation(mycontroller.class); //括號裡面傳的就是@contrller註解
將這個帶有註解的的類 放在map集合中 concurrenthashmap 下面這種集合
這是存放 掃瞄到有註解的類 key 小寫類名(string) value 該類的例項物件(object)
還是獲取上面那個map裡面的類
暫時放在url中,
通過class 獲取這個類下面的方法。
method methods = classinfo.getdeclaredmethods();
再將這個value新增到url上
然後再存乙個集合 concurrenthashmap
這是存放 掃瞄到註解上類和方法對應的位址 key 位址 url (string) vlaue 該類的例項物件
第三步 獲取位址和方法名
根據上面的位址和方法名(string)然後再建乙個concurrenthashmap.然後就完成了。
最後是寫dopost裡面的方法 這個簡單,
就是根據url去獲取方法 然後根據反射機制去執行這個方法 再獲取返回值,並進行頁面**。
如下幾張效果圖:
手寫SpringMVC框架
1.編寫 annotationhandleservlet,作為自定義註解的核心處理器以及負責呼叫目標業務方法和處理使用者請求的 處理器。2.當服務啟動的時候annotationhandleservlet初始化init 方法,進行包掃瞄,把controller類中的方法上的註解與類進行map對映儲存。...
手寫SpringMVC框架 2
前端控制器主要是捕獲來自瀏覽器 前端的請求,在伺服器啟動之前初始化spring容器中的元件。自定義dispatcherservlet類繼承httpservlet 初始化請求對映 private void for map.entry entryset public class 容器初始化 public...
手寫簡易handler
用通俗易懂的話來闡述handler在android中起到的作用 先用文字描述一下各個類的具體情況 public class handler mmessagequeue mlooper.mmessagequeue public void handlemessage message message pu...