Java 如何通过单击按钮从jsp页面停止servlet处理
我创建了一个调用servlet的JSP页面。该servlet的总处理时间至少为5分钟。在该servlet的进程完全完成之前,我想停止该进程并再次使用不同的参数调用Java 如何通过单击按钮从jsp页面停止servlet处理,java,jsp,servlets,Java,Jsp,Servlets,我创建了一个调用servlet的JSP页面。该servlet的总处理时间至少为5分钟。在该servlet的进程完全完成之前,我想停止该进程并再次使用不同的参数调用 我想在我的JSP页面中单击一个按钮,该按钮使servlet停止整个进程。您可以使用java executor框架来完成 创建线程池 将繁重的任务放入新线程中,并将其提交给executorService,executorService将为您处理并返回特性任务。并在会话中保存此功能 当您通过按钮调用StopURL时,您可以从会话中找到您的
我想在我的JSP页面中单击一个按钮,该按钮使servlet停止整个进程。您可以使用java executor框架来完成
Object task=session.getAttribute(属性\名称\工作\任务);
如果(任务==null)
返回“任务不存在”;
if(未来的任务实例)
((Future)session.getAttribute(ATTRIBUTE\u NAME\u WORKING\u TASK)).cancel(true);
这将取消您的任务,即使您已阻止等待servlet进程的UI,该进程也将被取消阻止有什么问题?您的UI已冻结,或者您要求找到能够取消servlet处理的解决方案?Vasif,是的,我希望能够取消servlet处理。
ExecutorService executorService = Executors.newFixedThreadPool(10);
Future<String> startedTask = executorService.submit(() -> {
System.out.println(Thread.currentThread().getName() + " started!");
try {
Thread.sleep(2 * 60 * 1000);//TODO: here goes your heavy task which tooks long to process
} catch (InterruptedException e) {
e.printStackTrace();
}
return "completed at " + System.currentTimeMillis();//here you can return your results if you need any
});
session.setAttribute(ATTRIBUTE_NAME_WORKING_TASK, startedTask);
String result = startedTask.get();
Object task = session.getAttribute(ATTRIBUTE_NAME_WORKING_TASK);
if (task == null)
return "Task doesnt exists";
if (task instanceof Future)
((Future<String>) session.getAttribute(ATTRIBUTE_NAME_WORKING_TASK)).cancel(true);