【发布时间】:2014-06-17 08:20:08
【问题描述】:
我正在使用 Jsp 和 servlet。在我的一个 jsp 页面中,我将调用一个 .sh 文件,该文件将执行 2-3 分钟,并且在该过程完成后它将重定向到另一个 jsp 页面。 我的问题是用户必须等待 2-3 分钟,然后在流程完成后只有他被重定向到下一页。我不希望发生这种情况我想启动必须在后台运行的进程,并且我希望页面立即被重定向。
process.jsp 页面
FileWriter fileWriter = new FileWriter(file3,true);
BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter);
fileWriter.append(userid+"\t"+movie_id[i]+"\t"+ratings[i]);
fileWriter.append('\n');
bufferFileWriter.close();
Process p=Runtime.getRuntime().exec("/home/yoganandhd/project.sh");
p.waitFor();
response.sendRedirect("login.jsp");
在上面的代码中,执行 project.sh 需要 3 分钟,它会执行一些数据挖掘过程,然后只有它被重定向到 login.jsp 页面。 我的要求是用户不能等待 3 分钟,必须通过在后台运行 project.sh 立即将他重定向到下一页。
我是一个新手,我对 java 不太了解,谁能说我怎么能做到这一点? 我可以使用线程来实现这一点吗?如果是怎么办? 有人请用相同场景的示例向我解释一下。
【问题讨论】:
-
考虑在线程完成时使用 websocket 接收通知。还要避免在jsp中使用代码,而是使用servlet
-
同意@ScaryWombat。此外,这不是很实用。没有人等待 3 分钟加载页面。考虑一个带有 AJAX 更新的进度页面。
-
@ScaryWombat 非常感谢你,我会采纳你的建议并使用 servlet。能不能给我一个小例子说明如何使用websocket来接收。
-
@NickJ 感谢您的宝贵意见。我是java新手,我是java基础知识的新手。你能建议或给我一个关于如何使用 AJAX 来解决我的问题的例子吗?
标签: java multithreading jsp servlets