⑴ 攔截器與過濾器的區別以及他們的執行順序
過濾器 是在java web中 你傳入的request response提前過濾掉一些信息 或者提前設置一些參數 然後再傳入servlet或者struts的 action進行業務邏輯 比如過濾掉非法url(不是login do的地址請求 如果用戶沒有登陸都過濾掉) 或者在傳入servlet或者 struts的action前統一設置字元集 或者去除掉一些非法字元
攔截器 是在面向切面編程的就是在你的service或者一個方法 前調用一個方法 或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現 在你調用方法前列印出字元串(或者做其它業務邏輯的操作) 也可以在你調用方法後列印出字元串 甚至在你拋出異常的時候做業務邏輯的操作
攔截器與過濾器的區別 攔截器是基於java的反射機制的 而過濾器是基於函數回調 攔截器不依賴與servlet容器 過濾器依賴與servlet容器 攔截器只能對action請求起作用 而過濾器則可以對幾乎所有的請求起作用 攔截器可以訪問action上下文 值棧里的對象 而過濾器不能訪問 在action的生命周期中 攔截器可以多次被調用 而過濾器只能在容器初始化時被調用一次
lishixin/Article/program/Web/201405/30789
⑵ java中攔截器、過濾器、監聽器都有什麼區別
過濾器,是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts2的
action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者
struts2的action前統一設置字元集,或者去除掉一些非法字元
攔截器,是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也正陵可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。
攔截器與過濾器的區別 :
攔截器是基於java的反射機制的,而過濾器是基於函數回調。
攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次
執行順序 :過濾前 - 攔截前 - Action處理 - 攔截後 -
過濾後。個人認為過濾是一個橫向的過程,首先把客戶端提交的內容進行過濾(例如未登錄用戶不能訪問內部頁面的處理);過濾通過後,攔截器將檢查用戶提交數
舉纖戚據的驗證,做一些前期豎謹的數據處理,接著把處理後的數據發給對應的Action;Action處理完成返回後,攔截器還可以做其他過程,再向上返回到過濾器的後續操作。
監聽器:這個東西在c/s模式裡面經常用到,他會對特定的事件產生產生一個處理。監聽在很多模式下用到。比如說觀察者模式,就是一個監聽來的。又比如struts2可以用監聽來啟動。Servlet監聽器用於監聽一些重要事件的發生,監聽器對象可以在事情發生前、發生後可以做一些必要的處理。
好比如果說Servlet的監聽器Listener,它是實現了javax.servlet.ServletContextListener
介面的伺服器端程序,它也是隨web應用的啟動而啟動,只初始化一次,隨web應用的停止而銷毀。主要作用是:
做一些初始化的內容添加工作、設置一些基本的內容、比如一些參數或者是一些固定的對象等等。