Servlet 監聽器Listener 的執行順序解析說明
阿新 • • 發佈:2019-01-22
一、先貼配置檔案 web.xml 的程式碼:
<listener>
<listener-class>com.zhj.action.MyListener</listener-class>
</listener>
<listener>
<listener-class>com.zhj.action.MyListener2</listener-class>
</listener>
二、監聽器的程式碼:
public class MyListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } /** * 容器被建立呼叫該方法 */ @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("MyListener的contextInitialized()"); } public MyListener() { System.out.println("MyListener的構造器"); } } public class MyListener2 implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } /** * 容器被建立呼叫該方法 */ @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("MyListener2的contextInitialized()"); } public MyListener2() { System.out.println("MyListener2的構造器"); } }
三、開啟伺服器,後臺的列印結果如下:
MyListener的構造器
MyListener2的構造器
MyListener的contextInitialized()
MyListener2的contextInitialized()
四、結論:
1、在 ServletContext 建立之前,Listener監聽器(包括其他型別監聽器)會先按配置順序初始化;
2、然後 ServletContext 初始化完成後會按照監聽器配置的順序回撥相應的方法,比如 ServletContextListener 的 contextInitialized() 方法。