在这里总结一下,Tomact启动时候会加载的方法,我总结了三种: 监听分两种,一种是继承,另一种是实现接口。看代码(用的话可以直接这样用,原理区别随后会补充): web.xml,三种方式都写在里边 <!-- 监听1 --> <listener> <listener-class> code.main.startup.ContextLoaderListenerTest </listener-class> </listener> <!-- 监听2 --> <listener> <listener-class>code.main.startup.AListener</listener-class> </listener> <!-- servlet方式 --> <servlet> <servlet-name>myServlet</servlet-name> <servlet-class>code.main.startup.MyServlet</servlet-class> <load-on-startup>2</load-on-startup><!--加这个标签,tomcat启动时会自动加载指定的servlet,值是servlet的加载顺序, 数字越小代表加载的优先级越高--> </servlet> 代码1: public class ContextLoaderListenerTest extends ContextLoaderListener { /** * @description 重写ContextLoaderListener的contextInitialized方法 */ public void contextInitialized(ServletContextEvent event) { System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaa"); } } 代码2: /** * ServletContext生死监听 * @author cxf * * 可以在这个监听器存放一些在tomcat启动时就要完成的代码! */ public class AListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("哇,我来也!"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("哇,我要挂也!"); } } 代码3: public class MyServlet extends HttpServlet { private static final long serialVersionUID = 1L; Testq AA = new Testq(); } /** * 内部类---方便测试 * * @author yhl * */ class Testq { { test(); } public void test() { System.out.println("AAAAAAAAAAAAA"); } }