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

2018-08-12 21:57 更新

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

過濾器

過濾器(Filter),并非必須,但很實(shí)用。

過濾器是一種設(shè)計(jì)模式,主要用來封裝Servlet中一些通用的代碼。在web.xml中配置哪些URL對(duì)應(yīng)哪些過濾器。

一個(gè)過濾器的寫法如下:

public void doFilter(ServletRequest request , ServletResponse response , FilterChain chain) {
    //處理 request
    chain.doFilter(request, response);
    //處理 response
}

假設(shè)針對(duì)一URL定義了3個(gè)過濾器,分別是MyFilter1、MyFilter2、MyFilter3,在web.xml中也是按照這個(gè)順序設(shè)置的, 那么過濾器和Servlet的執(zhí)行順序如下:

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

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

監(jiān)聽器

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)