编译通过了,然后放进去后发现只实现了前半个功能,各位达人能否帮忙改一下,小弟在此感激不尽!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);//没超时跳转一个显示图片的网页
}
}
}

解决方案 »

  1.   

    如果你想在页面上显示,那应该在showmap.jsp中写相应代码,否则没法知道你的
    output.println("waiting...");
    output.println("Timeout!"); 
    应该显示在什么地方。另外,如果你不打算forward,则应该有output.flush();output.close();这样的语句。
    这会将你上面的println()直接返回给客户端。注意,这不算是一个完整的页面。因为没有<html><body>等标准元素。最后,你的代码估计达不到需要的效果。可能的结果是,一次性返回多个"waiting..."给客户端,而不是逐个返回。
    从我的估计来看,也需要使用ajax才能达到你想要的效果。
      

  2.   

    output.println("waiting...");//页面上没显示,不知道提示是不是这样输出的? 这样肯定是不会输出的,output.println("");不是即时的
    要等这个servlet执行完后页面才会有反应的,而你的执行完后又跳到另外一个地方去了,那就看不到了
      

  3.   

    额……刚才的问题原来是TOMCAT服务器没刷新所以一直只显示前半个接口……谢谢上面两位达人……现在的问题是上面的那个addr.txt如果想放在根目录那应该怎么写?像我那么写似乎不会创建这个文件……同样还有那个fz.jpg文件如果在根目录应该怎么读入……这个东西被我七搞八搞现在页面输出全部变成??了……我现在效果不要求很好……只要求能够从表单中读入用户输入的两个串(中文似乎就变乱码了?这个不懂要怎么解决……)……然后检查fz.jpg有没有被更新……如果被更新就将那张图片显示出来……达人们有没有比较好的建议或者参考代码?感激不尽……
      

  4.   

    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("d:/addr.txt"));
    out.write(msg);
    out.close(); int count = 0;
    response.setContentType("text/html");
    PrintWriter output = response.getWriter();
    output.println("<html>");
    output.println("<head>");
    output.println("<title>TestPage</title>");
    output.println("</head>");
    output.println("<body>");
    output.println("<h1>waiting...</h1>");
    output.println("</body>");
    output.println("</html>");
    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("<html>");
    output.println("<head>");
    output.println("<title>TestPage</title>");
    output.println("</head>");
    output.println("<body>");
    output.println("<h1>Timeout!</h1>");
    output.println("</body>");
    output.println("</html>");
    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);
    }
    }
    }现在写成这样……但是一点提交,跳转到public页面,然后里面的静态文本全部变成“??”了……怎么回事……
      

  5.   

    根目录?前面加一个"/"即可。
    中文问题稍微复杂一点,你可以试试request.setCharacterEncoding("gb2312")方法
      

  6.   

    jsp页面前面一般需要增加<%@ page pageEncoding="GB2312"%>
      

  7.   

    额……现在?是不会显示了……不过保存结果还是?--而且那些WAITING/TIMEOUT还是不会显示……
    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(); request.setCharacterEncoding("gb2312");
    String addrFrom = new String(request.getParameter("addrFrom").getBytes("iso-8859-1"),"gbk");
    String addrTo = new String(request.getParameter("addrTo").getBytes("iso-8859-1"),"gbk");
    // String addrFrom = request.getParameter("addrFrom");
    // String addrTo = request.getParameter("addrTo");
    String msg = addrFrom + " " + addrTo;
    BufferedWriter out = new BufferedWriter(new FileWriter("d:/addr.txt"));
    out.write(msg);
    out.close(); int count = 0;
    response.setContentType("text/html;charset=GB2312");
    PrintWriter output = response.getWriter();
    output.println("<html>");
    output.println("<head>");
    output.println("<title>TestPage</title>");
    output.println("</head>");
    output.println("<body>");
    output.println("<h1>waiting...</h1>");
    output.println("</body>");
    output.println("</html>");
    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("<html>");
    output.println("<head>");
    output.println("<title>TestPage</title>");
    output.println("</head>");
    output.println("<body>");
    output.println("<h1>Timeout!</h1>");
    output.println("</body>");
    output.println("</html>");
    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);
    }
    }
    }
      

  8.   

    一般来讲,如果你要显示output提示信息,就不能再forward().
    一般的做法,是把提示信息放在jsp中:用request.setAttribute()存储内容,用标签(比如<c:out>,或者el表达式)取出来。
      

  9.   

    问题不断更新中……现在是一下WAITING和TIMEOUT同时显示了……
      

  10.   

    额……非常感谢MICROSEALKEY……对JSP自己纯粹是小白……老板非要我4天时间赶一个出来……
    最好早上这个模块就能成功……然后给你结帐……能否帮忙看下这段代码……希望现在没什么问题了……
    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(); request.setCharacterEncoding("gb2312");
    String addrFrom = new String(request.getParameter("addrFrom").getBytes("iso-8859-1"),"gbk");
    String addrTo = new String(request.getParameter("addrTo").getBytes("iso-8859-1"),"gbk");
    // String addrFrom = request.getParameter("addrFrom");
    // String addrTo = request.getParameter("addrTo");
    String msg = addrFrom + " " + addrTo;
    BufferedWriter out = new BufferedWriter(new FileWriter("d:/addr.txt"));
    out.write(msg);
    out.close(); int count = 0;
    response.setContentType("text/html;charset=GB2312");
    PrintWriter output = response.getWriter();
    while(count < 20){
                     long l=new File("fz.jpg").lastModified()-lastmodify;
                     if(l!=0)break;
    count++;
                     try {
                         Thread.sleep(100);
                     } catch (Exception e) {
                         // TODO Auto-generated catch block
                         System.err.println(e.toString());
                    }
                    }
    if(count == 20){
    output.println("<html>");
    output.println("<head>");
    output.println("<title>TestPage</title>");
    output.println("</head>");
    output.println("<body>");
    output.println("<h1>Timeout!<a href=\"public.jsp\">Back</a></h1>");
    output.println("</body>");
    output.println("</html>");
    }
    else{
    request.getRequestDispatcher("/showmap.jsp").forward(request,response);
    }
    }
    }
      

  11.   

    如果是在WEBAPPS主目录下的图片这两句应该在前面加个“/”是吧?long lastmodify=new File("fz.jpg").lastModified();long l=new File("fz.jpg").lastModified()-lastmodify;
      

  12.   

    页面还是没有跳到SHOWMAP.JSP……奇怪……
      

  13.   

    如果是在WEBAPPS主目录下的图片这两句应该在前面加个“/”是吧? long   lastmodify=new   File("fz.jpg").lastModified(); long   l=new   File("fz.jpg").lastModified()-lastmodify;
      

  14.   

    我是小白么……最后一个问题谁帮忙回答下我好结帐啊……如果是在WEBAPPS主目录下的图片这两句应该在fz.jsp前面加个“/”是吧?   long       lastmodify=new       File("fz.jpg").lastModified();   long       l=new       File("fz.jpg").lastModified()-lastmodify;
      

  15.   

    一般来说应该是相对路径,比如“../../fz.jpg”。
    你将getAbsolutePath()打出来看看,就知道应该增加多少个../
    或者你可以直接写绝对路径"d:/tomcat/webapps/fz.jpg"