1.springmvc入口在**?
入口在web.xml中
2.載入dispatcherservlet
1.首先我們看一下繼承樹
2.很明顯springmvc也是通過繼承httpservlet來實現請求的接收的
2.1 那麼他繼承了httpservlet那麼肯定會有doget();dopost什麼的對吧?
2.2 那麼doget();dopost()在**被實現的呢?我們可以看一下他的子類,通過查詢他是被抽象類frameworkservlet 所實現的
2.3 通過檢視frameworkservlet 中的doget或者dopost發現都呼叫了processrequest(request,response)方法
2.4 通過檢視processrequest(request,response)方法還是在frameworkservlet 所實現
這個方法重點我們看try裡面的方法doservice
2.5 doservice在哪兒呢?這個方法被formeworkservlet抽象類 做成了介面,被dispatcherservlet實現了
重點看到標記的方法 這個方法是重點!!!重點!!!重點!!!
2.6 dodispatch(request,response)這個方法在哪兒呢?這個方法還是在dispatcherservlet中
**解析:
// 獲取處理當前請求的介面卡(反射工具) 比如說是xml配置的還是註解注釋的 等分析這個方法的時候在分析
// 如果是get就做一些快取
string method = request.getmethod();
boolean isget = "get".equals(method);
if (isget || "head".equals(method))
if (new servletwebrequest(request, response).checknotmodified(lastmodified) && isget)
}
return;
}
// 通過介面卡也就是反射工具 真正的執行我們編寫的方法 並且返回modelandview
// 是否是非同步請求 如果是直接返回
if (asyncmanager.isconcurrenthandlingstarted())
// 如果目標方法沒有返回值 就使用預設的檢視名
}catch (exception ex)
catch (throwable err)
// 返回頁面的方法 根據modelandview**到對應的頁面 而且modelandview中的資料可以從請求域中取到
} catch (exception ex)
catch (throwable err)
// 後置的一些操作
finally
}else }}
} 2.7 重要的幾個方法解析
在分析這個方法要掌握9大元件!!! 雖然我也沒掌握 但是正在學習
元件的位置在dispatcherservlet中的屬性
那麼這個實在**初始化的呢?是spring做的init,這就是初始化的9大元件的地方!!!
這個第乙個點是用spring初始化的元件 他會通過handler的型別看是否符合 最後返回介面卡
這裡大量是用了反射 來進行操作!
4.processdispatchresult
首先看看是否有異常,然後準備一些資料什麼的,然後返回頁面
Fabric 原始碼解析 原始碼目錄解析
這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...
Spring原始碼解析之 Aop原始碼解析(2)
spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...
Integer原始碼解析
public class test else integer i3 200 integer i4 200 if i3 i4 else 結果為 原因integer 類會快取 128 到 127 之間的整數 但是如果new interger的話就是不同的物件了 源 分析 如果是在 128到正的127之間...