AOP
AOP渡讼,面向切面編程绪商,是一種編程思想苛谷。
Java中常見的AOP技術(shù)
有兩個分別是Filter和代理模式(也可以稱為過濾器和攔截器),F(xiàn)ilter是基于回調(diào)函數(shù)格郁。
代理模式是基于Java反射技術(shù)腹殿。
代理模式又分為靜態(tài)代理和動態(tài)代理,動態(tài)代理就是攔截器的簡單實現(xiàn)例书。
Spring AOP
Spring AOP锣尉,是AOP的一種實現(xiàn),使用的是代理模式决采。
Filter
Filter(過濾器)是J2EE的規(guī)范自沧,Servlet2.3開始引入/實現(xiàn)的是職責(zé)鏈模式。Filter可以用來設(shè)置字符集、控制權(quán)限拇厢、控制轉(zhuǎn)向等等爱谁。Filter也是AOP的一種實現(xiàn)。
Interceptor
Interceptor (攔截器)孝偎,是Struct2中的概念访敌。同樣是AOP的一種實現(xiàn)。
Filter與Interceptor聯(lián)系與區(qū)別
1. 攔截器是基于java的反射機(jī)制衣盾,使用代理模式寺旺,而過濾器是基于函數(shù)回調(diào)。
2. 攔截器不依賴servlet容器势决,過濾器依賴于servlet容器阻塑。
3. 攔截器只能對action起作用,而過濾器可以對幾乎所有的請求起作用(可以保護(hù)資源)徽龟。
4. 攔截器可以訪問action上下文叮姑,堆棧里面的對象,而過濾器不可以据悔。
5. 執(zhí)行順序:過濾前-攔截前-Action處理-攔截后-過濾后传透。