過濾器的生命週期通常都要通過下面三個階段:web
初始化xml
當容器第一次加載該過濾器時,init() 方法將被調用。該類在這個方法中包含了一個指向 Filter Config 對象的引用。對象
過濾生命週期
過濾器的大多數時間都消耗在這裏。doFilter方法被容器調用,同時傳入分別指向這個請求/響應鏈中的 Servlet Request、Servlet Response 和 Filter Chain 對象的引用。而後過濾器就有機會處理請求,將處理任務傳遞給鏈中的下一個資源(經過調用 Filter Chain 對象引用上的 doFilter方法),以後在處理控制權返回該過濾器時處理響應。資源
析構it
容器緊跟在垃圾收集以前調用 destroy()方法,以便可以執行任何須需的清理代碼。容器
關於chain.doFilter(request,response)
他的做用是將請求轉發給過濾器鏈上下一個對象。這裏的下一個指的是下一個filter,若是沒有filter那就是你請求的資源。 通常filter都是一個鏈,web.xml 裏面配置了幾個就有幾個。一個一個的連在一塊兒 配置
request -> filter1 -> filter2 ->filter3 -> .... -> request resource.request