Strus1原始碼心得

2021-08-30 21:02:44 字數 1163 閱讀 7718

struts1 = jsp + tag + servlet。struts1最核心的是actionservlet。

web.xml是struts1框架中最基本的入口。

定義了乙個標準的servlet,名字叫action,繼承actionservlet。.do的請求都被action攔截。

servlet的生命週期:當web容器啟動的時候,載入init方法,然後執行service方法。當web容器退出或關閉時,才把servlet銷毀。

actionservlet原始碼

通過字串載入,依賴性就少一點。

1,在initmoduleconfig裡開始解析struts-config.xml。把struts-config.xml通過digester轉換成moduleconfig物件。

2,初始化struts的資源檔案,解析後的資源檔案放在getservletcontext()裡

3,初始化struts的外掛程式。

4,初始化formbean,拿到配置的formbean,處理formbean擴充套件,判斷是否設定formbean的型別。然後檢查是不是動態formbean。

5,初始化forward,檢查它的擴充套件,判斷是否設定path。

6,初始化異常。

7,初始化action,拿到配置的action,處理action擴充套件。然後看action裡的forward。

8, moduleconfig.freeze()初始化凍結,凍結當前的模組的配置。因為初始化只執行一次。

9,拿初始化引數,它會判斷還有沒有其他的struts-config.xml檔案,如果有,就把當前struts-config.xml進行一次初始化操作。然 後銷毀掉這個物件。並釋放記憶體。

struts處理請求

.do發生的請求被actionservlet攔截下來,如果是get請求,就呼叫doget方法,如果是post請求,就呼叫dopost方法。doget和dopost都會呼叫process方法,統一處理。則在struts1 1.3.8版本之前處理請求都是在requestprocess內中.

struts是怎麼處理.do請求

所有的.do請求有actionservlet所攔截,

.do請求是通過職責鏈模式實現的

struts真正的處理請求不是actionservlet,而是鏈。

通過傳入使用者請求,生成乙個上下文的context。不過這只針對當前請求。

原始碼閱讀心得

簡單記錄一下自己最近一段時間閱讀乙個c語言開源專案的心得 1 閱讀工具 source insight 4.0 gdb typora 2 閱讀心得 1 不要陷在 的實現細節裡面出不來,浪費時間。因為稍微大一點的開源專案,都有很多自定義的結構體,這些結構體封裝了大量的實現細節,特別是c語言的指標滿天飛,...

PTR原始碼心得(一)

pulltorefresh ptr 是非常常用的乙個控制項,雖然因為理念的問題,已經算是落後,並且已經停止維護,但是總得來說是十分實用的控制項,並且其中很多的設計理念都還算非常縝密。最近因為專案需要,需要對ptr進行一些改進,所以第一次系統的讀了一下ptr的 也是第一篇的csdn的部落格。1.設計概...

set原始碼之心得

c 的stl很強大,強大到我只願慵懶地去使用而不知其所以然。直到李師問我,我的回答被李師否定,我方才意識到自己是多麼地淺陋。希望自己有空抽時間把stl原始碼給研究一下,化為自己真正可以掌控的力量。set容器的原型 templateclass compare less,class alloc stl ...