我有一个要求,我需要调用从jsp页面命中的ServletContextListener的contextInitialized和contextDestroyed方法。根据我的需要,我必须使用从Jsp页面收到的一些计时器输入参数但我是无法实现这个......
我已经创建了一个servet但是这个servlet不是按照要求的,所以请求不是从jsp表单到servlet,我知道要在servlet中添加什么来获取jsp页面的命中和输入.. < / p>
这是我的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>>
请各位帮我如何从jsp到servlet页面(Context)获取用户输入。
提前致谢...
答案 0 :(得分:1)
您无法将任何数据从JSP传递给这些方法,因为它们是Web应用程序的生命周期方法。在你看到jsp之前contextInitialized
开火。
ServletContextListener
用于初始化和清理应用程序中使用的资源。
有关ServletContextListener的正确使用,请参阅this帖子。
答案 1 :(得分:1)
如果您想根据用户的请求更改计时器的超时,则必须:
event.getServletContext().setAttribute("timer",timer);
getServletContext().getAttribute("timer")
application
范围