高手帮忙看下这个servlet,在线等,马上结帐!
编译通过了,然后放进去后发现只实现了前半个功能,各位达人能否帮忙改一下,小弟在此感激不尽!
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PublicAsk extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException,
IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
long lastmodify=new File("fz.jpg").lastModified();
String addrFrom = request.getParameter("addrFrom");
String addrTo = request.getParameter("addrTo");
String msg = addrFrom + " " + addrTo;
BufferedWriter out = new BufferedWriter(new FileWriter("addr.txt"));
out.write(msg);
out.close();//这一段都没问题
int count = 0;
PrintWriter output = response.getWriter();
while(count < 10){
long l=new File("fz.jpg").lastModified()-lastmodify;
if(l!=0)break;
output.println("waiting...");//页面上没显示,不知道提示是不是这样输出的?
count++;
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO Auto-generated catch block
System.err.println(e.toString());
}
}
if(count == 10){
output.println("Timeout!");
try {
Thread.sleep(300);
} catch (Exception e) {
// TODO Auto-generated catch block
System.err.println(e.toString());
}
request.getRequestDispatcher("/public.jsp").forward(request, response);//超时返回
}
else{
request.getRequestDispatcher("/showmap.jsp").forward(request,response);//没超时跳转一个显示图片的网页
}
}
}
------解决方案--------------------如果你想在页面上显示,那应该在showmap.jsp中写相应代码,否则没法知道你的
output.println("waiting...");
output.println("Timeout!");
应该显示在什么地方。
另外,如果你不打算forward,则应该有output.flush();output.close();这样的语句。
这会将你上面的println()直接返回给客户端。注意,这不算是一个完整的页面。因为没有<html><body>等标准元素。
最后,你的代码估计达不到需要的效果。可能的结果是,一次性返回多个"waiting..."给客户端,而不是逐个返回。
从我的估计来看,也需要使用ajax才能达到你想要的效果。
------解决方案--------------------output.println("waiting...");//页面上没显示,不知道提示是不是这样输出的?
这样肯定是不会输出的,output.println("");不是即时的
要等这个servlet执行完后页面才会有反应的,而你的执行完后又跳到另外一个地方去了,那就看不到了