我有这段代码,
@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
使用当前代码,您需要执行GET请求以查看输出HEREEEE。
HEREEEE
如果您想在Servlet的启动时做一些事情(即loadOnStartup,值大于或等于零的元素0),则需要将代码放入init方法或Servlet的构造函数中:
loadOnStartup
0
@Override public void init() throws ServletException { System.out.println("HEREEEE"); }
使用侦听器启动 应用程序范围 (中的ServletContext)中的资源可能更方便。
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请求之间的共享变量_的问题。