過濾器(Filter),并非必須,但很實用。
過濾器是一種設(shè)計模式,主要用來封裝Servlet中一些通用的代碼。在web.xml中配置哪些URL對應(yīng)哪些過濾器。
一個過濾器的寫法如下:
public void doFilter(ServletRequest request , ServletResponse response , FilterChain chain) {
//處理 request
chain.doFilter(request, response);
//處理 response
}
假設(shè)針對一URL定義了3個過濾器,分別是MyFilter1、MyFilter2、MyFilter3,在web.xml中也是按照這個順序設(shè)置的, 那么過濾器和Servlet的執(zhí)行順序如下:
之所以能達到這樣的效果,chain.doFilter(request, response);
起到了很大的作用。
值得注意的是,如果每個Filter沒有到達chain.doFilter
就返回了,那么后續(xù)的Filter或者Servlet也就不會執(zhí)行。
當(dāng)某個事件發(fā)生時候,監(jiān)聽器里的方法會被調(diào)用。例如Tomcat容器啟動時、銷毀時,session創(chuàng)建時、銷毀時。
更多建議: