簡體   English   中英

如何在通過Jsp訪問的Servlet中實現ServletContextListener

[英]How to implement ServletContextListener in servlet accessed through Jsp

我有一個需求,我需要調用從jsp頁面命中的ServletContextListener的contextInitialized和contextDestroyed方法。根據我的需要,我必須使用一些從Jsp頁面接收到的計時器輸入參數,但我無法實現這個...

我已經創建了一個服務端,但是該servlet不是根據要求的,因此請求不會從jsp形式轉到servlet,並且我知道在servlet中添加什么以從jsp頁面獲得匹配和輸入。

這是我的Servlet頁面。

@WebListener()
public class MyContext implements ServletContextListener {

//private ScheduledExecutorService sched;
Timer timer = new Timer();

@Override
public void contextInitialized(ServletContextEvent event) {
    //sched = Executors.newSingleThreadScheduledExecutor();
    //sched.scheduleAtFixedRate(new MyTask(), 0, 5, TimeUnit.SECONDS);


    Calendar date = Calendar.getInstance();
    date.set(
            //Calendar.DAY_OF_WEEK,Calendar.TUESDAY);
            Calendar.DAY_OF_MONTH, 12);
    date.set(Calendar.HOUR, 00);
    date.set(Calendar.MINUTE, 11);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);


    timer.schedule(
            new MyTask(),
            date.getTime(),
            1000 * 60 * 60 * 24 * 7);

}

@Override
public void contextDestroyed(ServletContextEvent event) {
    //sched.shutdownNow();
    timer.cancel();
}

}

這是我的jsp頁面。

 <form action="MyContext" method="GET">
        <label>Set Date: </label>
        <input type="text" name="date" id="date">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <label>Set Time: </label>
        <input type="text" name="time" id="time">
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input type="Submit" name="Submit" value="Submit" id="Submit">
    </form>

這是我的web.xml文件..

<servlet>
    <servlet-name>MyContext</servlet-name>
    <servlet-class>MyContext</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyContext</servlet-name>
    <url-pattern>/MyContext</url-pattern>
</servlet-mapping>
<listner>
    <listner-class>
 MyContext
    </listner-class>>
</listner>>

請大家幫我,如何從jsp到servlet頁面(上下文)獲取用戶輸入。

提前致謝...

您不能將任何數據從JSP傳遞到那些方法,因為它們是Web應用程序的生命周期方法。 在看到jsp之前,使用contextInitialized觸發方式。

ServletContextListener用於初始化和清除應用程序中使用的資源。 請參考這篇文章以適當地使用ServletContextListener。

如果要根據用戶的請求更改計時器的超時,則必須:

  • 將計時器放入ServletContext中,以便其他組件(例如servlet或jsp)可以訪問它。 將此添加到您的偵聽器的contextInitialized event.getServletContext().setAttribute("timer",timer);
  • 使用getServletContext().getAttribute("timer")從servlet訪問計時器
  • 您甚至從JSP訪問計時器,它都將存儲在application范圍內

暫無
暫無

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

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