当我点击一个按钮时,它会在服务器上执行一个批处理文件,这需要相当长的时间才能完成,所以我需要在我的页面上显示 Please Wait 消息,同时执行该过程在背景中。我的JSP中有以下代码。
<%
if(session.getAttribute("wait") != null){
session.removeAttribute("wait");
%>
// this is 'wait' block
<html>
<head><title>searching...</title>
<meta http-equiv='Refresh' content='0'>
<style type="text/css">
.wait{
font-family: arial;
font-size: 13px;
color: #ff0000;
font-weight: bold;
}
</style>
</head>
<body>
<table align="center" valign="middle">
<tr>
<td class="wait">
Please wait, menus are being searched...
<br>
<img src="ajax-loader.gif" border="0">
</td>
</tr>
</table>
</body>
</html>
<%
}
else{
session.setAttribute("wait", new String());
%>
// This is where process is executed.
<html>
<body>
<head>
<title>List</title>
</head>
<%
try
{
Process p = Runtime.getRuntime().exec("cmd.exe /c start /wait my.bat");
p.waitFor();
out.print("The last update was on "+ sdf.format(file.lastModified()));
}
catch(Exception ex)
{
out.println(ex);
}
%>
<p>
<iframe src="../jsp/new_list.txt" frameborder="0" height="80%" width="95%"></iframe>
</p>
</body>
</html>
但是这里发生的事情是,当我点击按钮时,进程被执行但没有消息出现,现在当批处理文件执行完毕时,执行请求再次被触发并且屏幕上出现Wait消息。请帮我解决。
答案 0 :(得分:0)
在JSP中使用scriptlet是不好的做法。
点击按钮时显示加载图像的逻辑很简单
1.有隐藏的装载图像
2.点击按钮显示加载图片。
3.当您从服务器获得响应时隐藏加载图像。