web.xml 的加載順序是:context- param -> listener -> filter -> servlet html
過濾器和servlet執行關係:java
一、servlet:servlet的生命週期始於它被裝入web服務器的內存時,並在web服務器終止或從新裝入servlet時結束。servlet一旦被裝入web服務器,通常不會從web服務器內存中刪除,直至web服務器關閉或從新結束。
(1)、裝入:啓動服務器時加載Servlet的實例;
(2)、初始化:web服務器啓動時或web服務器接收到請求時,或者二者之間的某個時刻啓動。初始化工做有init()方法負責執行完成;
(3)、調用:從第一次到之後的屢次訪問,都是隻調用doGet()或doPost()方法;
(4)、銷燬:中止服務器時調用destroy()方法,銷燬實例。 web
二、filter:(必定要實現javax.servlet包的Filter接口的三個方法init()、doFilter()、destroy(),空實現也行)
(1)、啓動服務器時加載過濾器的實例,並調用init()方法來初始化實例;
(2)、每一次請求時都只調用方法doFilter()進行處理;
(3)、中止服務器時調用destroy()方法,銷燬實例。數據庫
三、listener:相似於servlet和filter服務器
web.xml 的加載順序是:context- param -> listener -> filter -> servlet spa
四、interceptor:以struts的攔截器爲例,加載了struts.xml之後,初始化相應攔截器。當action請求來時調用intercept方法,服務器中止銷燬interceptor。xml
一、servlet:htm
建立並返回一個包含基於客戶請求性質的動態內容的完整的html頁面;
建立可嵌入到現有的html頁面中的一部分html頁面(html片斷);
讀取客戶端發來的隱藏數據;
讀取客戶端發來的顯示數據;
與其餘服務器資源(包括數據庫和java的應用程序)進行通訊;
經過狀態代碼和響應頭向客戶端發送隱藏數據。接口
二、filter:生命週期
filter可以在一個請求到達servlet以前預處理用戶請求,也能夠在離開servlet時處理http響應:
在執行servlet以前,首先執行filter程序,併爲之作一些預處理工做;
根據程序須要修改請求和響應;
在servlet被調用以後截獲servlet的執行
三、listener:職責如概念。
servlet2.4規範中提供了8個listener接口,能夠將其分爲三類,分別以下:
第一類:與servletContext有關的listner接口。包括:ServletContextListener、ServletContextAttributeListener
第二類:與HttpSession有關的Listner接口。包括:HttpSessionListner、 HttpSessionAttributeListener、HttpSessionBindingListener、 HttpSessionActivationListener;
第三類:與ServletRequest有關的Listener接口,包括:ServletRequestListner、ServletRequestAttributeListener
四、interceptor:與過濾器十分類似,經過層層攔截,處理用戶的請求和響應。
備註:web.xml 的加載順序是:context-param -> listener -> filter -> servlet 。瞭解了這幾個概念的區別之後,不難理論這個加載順序了。