簡體   English   中英

在應用程序啟動時執行servlet

[英]Execute servlet on startup of the application

我使用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...
    }
}

到現在<a href="MyServlet.."> ,當JSP頁面像<a href="MyServlet..">這樣調用它時,我的serlvet被調用了。 我想要的是每當應用程序啟動時也要執行的servlet。 我可以在第一頁上有一個類似“ START”的按鈕,然后在那里調用servlet。但是,我可以避免這種情況嗎?

您可以在Tomcat的web.xml(或類似服務器中的相應配置文件)中對其進行配置,如下所示,使用標簽<load-on-startup>

<servlet>
    <servlet-name>MyOwnServlet</servlet-name>
    <servlet-class>MyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
 </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中聲明它:

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

在我看來,一個好的方法是實現Servlet Context Listener。 它監聽應用程序的啟動和關閉。

public class YourListener implements javax.servlet.ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
    }

    public void contextDestroyed(ServletContextEvent sce) {
    }
}

然后,您可以在web.xml()或@WebServletContextListener批注中配置偵聽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM