Java 如何在通过Jsp访问的servlet中实现ServletContextListener
我有一个需求,我需要调用ServletContextListener的contextInitialized和contextDestroyed方法,该方法是从jsp页面命中的。根据我的需要,我必须使用从jsp页面接收到的一些计时器输入参数,但我无法实现这一点 我已经创建了一个servet,但是这个servlet不符合要求,所以请求不会从jsp表单转到servlet,我知道应该在servlet中添加什么,以从jsp页面获得点击和输入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
<form action="MyContext" method="GET">
<label>Set Date: </label>
<input type="text" name="date" id="date">
<label>Set Time: </label>
<input type="text" name="time" id="time">
<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">
<label>Set Time: </label>
<input type="text" name="time" id="time">
<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访问计时器,它将存储在
应用程序
范围中