日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-拦截器模式

發布時間:2025/7/14 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-拦截器模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看到strut2的Interceptor(攔截器),
tomcat源碼的Valve(tomcat中各種各樣容器如Wrapper,Context都是靠Valve實現各種功能),
以及最早學習到的java web中的javax.servlet.Filter的概念,
都是一種鏈式的處理流程,這一個環節處理完成,然后處理另一個環節,這樣就可以在一個處理本身的之前和之后做一些事情了。
比如說,struts2中Action在執行之前會首先執行一些Interceptor,完成諸如權限驗證/屬性注入/Validation/國際化等等的功能,
我看過一個比較好的功能是,利用strut2的攔截器和*-Validation.xml文件以及標簽(strut2標簽,主要是form-close.ftl這個模板文件),自動生成頁面的Form前端驗證。(當然輔助的客戶端js文件如jquery/jquery-validation也是需要的)。

以上的這些功能,通過一種名為責任鏈或者攔截器或者過濾器(語義上的區別而技術上沒有什么區別,知道做了什么就行了)的設計模式可以實現,那么就來看看什么是責任鏈的設計模式。
以下內容參考北京尚學堂的馬士兵老師的設計模式視頻,在此感謝。

Filter的概念
引入FilterChain的概念
模仿馬老師寫的代碼,

地址1:http://download.csdn.net/detail/hx888/6839619?(filter的單向過濾的簡單實現)

地址2:http://download.csdn.net/detail/hx888/6949155?(模仿java web的filter實現雙向過濾)
既處理從客戶端到服務器的消息,又處理從服務器到客戶端的消息,這樣的過濾器該怎么設計呢?
首先,構造兩個類,Request和Response,分別代表請求和響應,
其次,因為要滿足首先執行Request的過濾然后執行Response的過濾以及正序執行Request的過濾和反序執行Response的過濾,所以在doFilter方法中加入FilterChain的引用,
這樣可以依次先對Request進行下一個Filter的處理,然后反過來再處理Response的過濾。
模仿馬老師寫的代碼,地址:

分析strut2中interceptorsStack(攔截器棧)
首先,執行action之前會按照順序執行所有的interceptor,執行action之后返回一個結果字符串也會按照同之前相反的順序執行所有的interceptor。
我覺得,首先,執行action之后的所有interceptor是必須執行的,且先于對action執行完之后返回的結果進行處理,并且是有嚴格順序的。
至于是不是對action執行完之后返回的結果進行處理,以及處理順序,看到到是次要的?


如果request請求不合乎一個攔截器的請求條件,如權限檢查的攔截器,停止后續處理,如何實現?

轉載于:https://www.cnblogs.com/wenwujuncheng/p/3515833.html

總結

以上是生活随笔為你收集整理的设计模式-拦截器模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。