Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在通过Jsp访问的servlet中实现ServletContextListener_Java_Jsp_Servlets_Servletcontextlistener - Fatal编程技术网

Java 如何在通过Jsp访问的servlet中实现ServletContextListener

Java 如何在通过Jsp访问的servlet中实现ServletContextListener,java,jsp,servlets,servletcontextlistener,Java,Jsp,Servlets,Servletcontextlistener,我有一个需求,我需要调用ServletContextListener的contextInitialized和contextDestroyed方法,该方法是从jsp页面命中的。根据我的需要,我必须使用从jsp页面接收到的一些计时器输入参数,但我无法实现这一点 我已经创建了一个servet,但是这个servlet不符合要求,所以请求不会从jsp表单转到servlet,我知道应该在servlet中添加什么,以从jsp页面获得点击和输入 <form action="MyContext" meth

我有一个需求,我需要调用ServletContextListener的contextInitialized和contextDestroyed方法,该方法是从jsp页面命中的。根据我的需要,我必须使用从jsp页面接收到的一些计时器输入参数,但我无法实现这一点

我已经创建了一个servet,但是这个servlet不符合要求,所以请求不会从jsp表单转到servlet,我知道应该在servlet中添加什么,以从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>
这是我的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>>

MyContext
MyContext
MyContext
/MyContext
MyContext
>
>
请帮助我如何将用户输入从jsp获取到servlet页面(上下文)


提前感谢…

您不能从JSP向这些方法传递任何数据,因为它们是web应用程序的生命周期方法
contextInitialized
在看到jsp之前启动

ServletContextListener
用于初始化和清理应用程序中使用的资源。
有关ServletContextListener的正确使用,请参阅文章。

如果要更改用户请求的计时器超时,您必须:

  • 将计时器放入ServletContext,以便其他组件(如servlet或jsp)可以访问它。将其添加到侦听器的contextInitialized
    event.getServletContext().setAttribute(“timer”,timer)
  • 使用
    getServletContext()从servlet访问计时器。getAttribute(“计时器”)
  • 您甚至可以从JSP访问计时器,它将存储在
    应用程序
    范围中

ServletContextListener用于在web应用启动或销毁时获取通知。为什么要将某些内容从JSP传递到ServletContext?@PrasadKharkar先生,我在ServletContextListener中设置了一个计时器,我需要用户设置该计时器的值,以便在用户提供的时间执行操作。我猜您误解了您的功能要求。请将其发布,您可能会收到更好、更准确的指导。