一尘不染

使用JAVA中的注释在启动时加载

tomcat

我有这段代码,

@WebServlet(value="/initializeResources", loadOnStartup=1)
public class InitializeResources extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
      System.out.println("HEREEEE");
  }

}

但是,当Web应用程序启动时,Servlet不会启动。

如何在Servlet Annotation启动时使用负载?

我的Servlet API是3.0,我使用Tomcat 7


阅读 246

收藏
2020-06-16

共1个答案

一尘不染

使用当前代码,您需要执行GET请求以查看输出HEREEEE

如果您想在Servlet的启动时做一些事情(即loadOnStartup,值大于或等于零的元素0),则需要将代码放入init方法或Servlet的构造函数中:

@Override
public void init() throws ServletException {
    System.out.println("HEREEEE");
}

使用侦听器启动 应用程序范围 (中的ServletContext)中的资源可能更方便。

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

@WebListener
public class InitializeListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("On start web app");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("On shutdown web app");
    }

}

例如,请参阅我的答案,以获取有关 _JAX-RS请求之间的共享变量_的问题。

2020-06-16