本文分析了struts2過濾器和攔截器的區別。分享給大家供大家參考,具體如下:
一、本質區別:
1. 攔截器是基于java的反射機制的,而過濾器是基于函數回調。
2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次
二、使用區別:
過濾器 是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然后再傳入servlet或者struts的 action進行業務邏輯,
比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),
或者在傳入servlet或者 struts的action前統一設置字符集,
或者去除掉一些非法字符(聊天室經常用到的,一些罵人的話)。。。
攔截器 可通過的是符合條件的action。 攔截器本身是一個普通的Java對象,它能動態攔截Action調用,
Action執行前后執行攔截器本身提供的各種個樣的Web項目需求。也可以阻止Action的執行,同時也可以提取
Action中可以復用的部分。
(是在面向切面編程的,就是在你的service或者一個方法前調用一個方法,或者在方法后調用一個方法,比如動態代理就是攔截器的簡單實現,在你調用方法前打印出字符串(或者做其它業務邏輯的操作),也可以在你調用方法后打印出字符串,甚至在你拋出異常的時候做業務邏輯的操作。)
希望本文所述對大家基于Struts框架的Java程序設計有所幫助。