在应用程序启动时执行servlet

时间:2015-06-08 09:32:37

标签: java servlets

我用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页面调用它时<a href="MyServlet..">。我想要的是每当应用程序启动时,也要执行servlet。我可以在第一页中找到一个按钮,例如&#34; START&#34;然后调用servlet ..但是,我可以避免这种情况吗?

3 个答案:

答案 0 :(得分:4)

您可以使用标记<load-on-startup>在Tomcat的web.xml(或类似服务器中的相应配置文件)中进行配置,如下所示:

<servlet>
    <servlet-name>MyOwnServlet</servlet-name>
    <servlet-class>MyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
 </servlet>

答案 1 :(得分:3)

无论你想在启动时做什么都应该由一个实现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中声明它:

<listener>
   <listener-class>
      com.whatever.MyContextListener 
   </listener-class>
</listener>

答案 2 :(得分:2)

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

public class YourListener implements javax.servlet.ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
    }

    public void contextDestroyed(ServletContextEvent sce) {
    }
}

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