日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Struts2中的攔截器的內部結構

系統 1877 0

讓我們再來回顧一下之前我們曾經用過的一張Action LifeCycle的圖:

Struts2中的攔截器的內部結構

圖中,我們可以發現,Struts2的Interceptor一層一層,把Action包裹在最里面。這樣的結構,大概有以下一些特點:

1. 整個結構就如同一個堆棧,除了Action以外,堆棧中的其他元素是Interceptor

2. Action位于堆棧的底部。由于堆棧"先進后出"的特性,如果我們試圖把Action拿出來執行,我們必須首先把位于Action上端的Interceptor拿出來執行。這樣,整個執行就形成了一個遞歸調用

3. 每個位于堆棧中的Interceptor,除了需要完成它自身的邏輯,還需要完成一個特殊的執行職責。這個執行職責有3種選擇:

1) 中止整個執行,直接返回一個字符串作為resultCode

2) 通過遞歸調用負責調用堆棧中下一個Interceptor的執行

3) 如果在堆棧內已經不存在任何的Interceptor,調用Action


Struts2的攔截器結構的設計,實際上是一個典型的 責任鏈模式 的應用。首先將整個執行劃分成若干相同類型的元素,每個元素具備不同的邏輯責任,并將他們納入到一個鏈式的數據結構中(我們可以把堆棧結構也看作是一個遞歸的鏈式結構),而每個元素又有責任負責鏈式結構中下一個元素的執行調用。

這樣的設計,從代碼重構的角度來看,實際上是將一個復雜的系統,分而治之,從而使得每個部分的邏輯能夠高度重用并具備高度可擴展性。所以,Interceptor結構實在是Struts2/Xwork設計中的精華之筆。

Struts2中的攔截器的內部結構


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 尖扎县| 晋州市| 德昌县| 汉源县| 德化县| 新巴尔虎左旗| 舒兰市| 桓台县| 偃师市| 万安县| 兴山县| 体育| 双柏县| 林州市| 汉川市| 阿克陶县| 固原市| 彰武县| 西和县| 兴宁市| 太仓市| 青海省| 阜平县| 岑溪市| 十堰市| 湟中县| 子长县| 余姚市| 梁平县| 循化| 肥东县| 蒲城县| 裕民县| 永年县| 磐石市| 沾益县| 慈利县| 孟津县| 三江| 弥渡县| 大庆市|