過濾器與監(jiān)聽器

2018-08-12 21:57 更新

過濾器與監(jiān)聽器

過濾器

過濾器(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í)行順序如下:

  • MyFilter1中處理request的代碼;
  • MyFilter2中處理request的代碼;
  • MyFilter3中處理request的代碼;
  • 相應(yīng)的Servlet;
  • MyFilter3中處理response的代碼;
  • MyFilter2中處理response的代碼;
  • MyFilter1中處理response的代碼;

之所以能達到這樣的效果,chain.doFilter(request, response);起到了很大的作用。 值得注意的是,如果每個Filter沒有到達chain.doFilter就返回了,那么后續(xù)的Filter或者Servlet也就不會執(zhí)行。

監(jiān)聽器

當(dāng)某個事件發(fā)生時候,監(jiān)聽器里的方法會被調(diào)用。例如Tomcat容器啟動時、銷毀時,session創(chuàng)建時、銷毀時。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號