在应用程序启动时执行servlet

我用JSP构建一个Web应用程序,在我的servlet中我有:

public class MyServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { init(); HttpSession session = request.getSession(true); //more code... } } 

直到现在我的serlvet被调用,当JSP页面调用它时,如 。 我想要的是每当应用程序启动时,也要执行servlet。 我可以在我的第一页中有一个按钮,如“START”,然后调用servlet ..但是,我可以避免这个吗?

无论你想在启动时做什么都应该由一个实现ServletContextListener的类来完成,所以你应该编写这样一个类,例如:

 public class MyContextListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent arg0) { //do stuff } @Override public void contextInitialized(ServletContextEvent arg0) { //do stuff before web application is started } } 

然后你应该在web.xml中声明它:

   com.whatever.MyContextListener   

您可以在Tomcat的web.xml(或类似服务器中的相应配置文件)中配置它,如下所示,使用标记

  MyOwnServlet MyServlet 1  

在我看来,一个好方法是实现一个Servlet Context Listener。 它监听应用程序启动和关闭。

 public class YourListener implements javax.servlet.ServletContextListener { public void contextInitialized(ServletContextEvent sce) { } public void contextDestroyed(ServletContextEvent sce) { } } 

然后,在web.xml()中或使用@WebServletContextListener注释配置侦听器。