簡體   English   中英

應用程序啟動時啟動servlet

[英]Starting the servlet when the application startup

我想在加載jsp頁面之前啟動servlet類,因為我需要在jsp頁面中填充數據庫中的一些數據。 web.xml中的Servlet映射

    <servlet>
        <servlet-name>Index</servlet-name>
        <servlet-class>com.Teklabz.Servlets.IndexServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Index</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

但它沒有用,當跟蹤代碼時它永遠不會到達servlet類。 另外我試圖像這個鏈接一樣使用ServletContextListener,但我遇到了同樣的問題。

監聽代碼:

public class ServletListener implements ServletContextListener{

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

web.xml代碼:

    <listener>
        <listener-class>com.techlabz.listener.ServletListener</listener-class>
    </listener>

我不知道做錯了什么。

有很多方法可以實現這一點..

  1. 您可以在服務方法com.Teklabz.Servlets.IndexServlet填充數據,然后在request屬性中設置數據,然后轉發到該jsp
  2. 如果你想使用loadonstartiup你可以在com.Teklabz.Servlets.IndexServlet servlet的init方法中填充db中的數據,然后在一些可訪問的范圍(request,session,context)設置它,並通過直接訪問jsp從中獲取數據范圍。
  3. 在監聽器中,您也可以執行此操作,但在這種情況下,您還需要在某個范圍內設置數據。

你的代碼是完全正確的。你需要添加注釋@WebListener

  @WebListener
   public class ServletListener implements ServletContextListener{
    //your code
   }

暫無
暫無

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

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