关于实现接口ServletContextListener类的监听器执行顺序,使用注解方式annotation

新建,AListerner,BListerner,Listerner1,Listerner2,MyListerner.类,以上5个类全部都实现ServletContextListener接口,覆写contextInitialized()方法,

输出System.out.println("ServletContex初始化---AListerner");

类似的BListerner,Listerner1,Listerner2,MyListerner.也在contextInitialized()打印一条语句。

package com.servlet;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class AListerner implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
    // TODO Auto-generated method stub

     }

   @Override
   public void contextInitialized(ServletContextEvent arg0) {
   // TODO Auto-generated method stub

     System.out.println("ServletContex初始化---AListerner");
   }

}

 启动Tomcat,控制台输出顺序AListerner→BListerner→Listerner1→Listerner2→MyListerner.

新增一个FListerner类,实现ServletContextListener接口,覆写contextInitialized()方法,查看输出效果:

以上可以知道,监听器的执行顺序是AListerner→BListerner→FListerner→Listerner1→Listerner2→MyListerner.

根据类名的排序来执行。

用web.xm方式,是调整listerner标签方式来控制执行顺序。

<listener>
<listener-class>com.xxx.HelloServletContextListner</listener-class>
</listener>

原文地址:https://www.cnblogs.com/jmuccx/p/7690944.html