错在  out.println("OK");你运行一下就知道了啊!

解决方案 »

  1.   

    把out作为参数传进去,加个方法 setOut(PrintStream out)
      在ChatShow 中加个PrintStream 的类成员变量就可以了
      

  2.   

    to: mem_fox(JAVA狐狸) 
    还是不可以啊!!!
    ————————————————
    <%@ page contentType = "text/html; charSet=gb2312" %>
    <%@ page import="javax.servlet.*,java.io.*,java.util.*,java.sql.*"%>
    <%
      class ChatShow implements Runnable  {    int k = 0;
        Thread thr = null;
        javax.servlet.jsp.JspWriter pw;
        public void setOut(JspWriter out)
        {
          pw = out;
        }    public void start()
        {
           if (thr == null)
           {
             thr = new Thread(this);
             thr.start();
           }
         }     public void stop()
         {
             if (thr != null)
             {
                thr.stop();
                thr = null;
             }
         }
         public void run()
         {
            while(true)
            {
               try
               {
           k++;
                   pw.pw.println(k + "ok");
                   //希望在网页上输出
               } catch (Exception e) {
                    System.out.println("Error in while:" + e.getMessage());
               }
               try
       {
            thr.sleep(2000);
               } catch (InterruptedException e){}        }
     }
      }
    //  javax.servlet.jsp.PageContext pageContext;
      ChatShow CS = new ChatShow();
      CS.setOut(out);
      CS.start();
    %>
      

  3.   

    to:mem_fox(JAVA狐狸) 
    还是不行啊
      

  4.   

    要用内建对象Response的getWriter或者getOutputStream方法获得PrintWriter或者ServletOutputStream,然后用他们向页面上输出信息
      

  5.   

    线程启动方式这样好吗?没试过这样做。
    记得通常是不需要重载start方法吧?同时从线程中取得数据输出到页面方式应该是不可行的。
    jsp叶面接收到客户端请求后就需要马上给出响应,然后就把jsp解析成静态的页面了。而线程是不可预知合适结束、何时有返回值。
    所以从理论上来说,这种方法是不可行的。不知道你为什么需要在jsp中启动线程?
      

  6.   

    如果仅仅希望编译通过可以这样改:
      pw.println("ok");
    ...
      final javax.servlet.jsp.JspWriter pw=out;让内嵌类使用局部变量
      ChatShow CS = new ChatShow();
      CS.setOut(pw);
      CS.start();
    但我猜想这个结果不会然你满意,正如楼上所说的"..解析成静态的页面了"
    你不会在一面上看看一个变动得数字,servlet在这里也帮不上忙,他和jsp本质上是一个东西.嵌入applet实现这个没有问题的.
      

  7.   

    pw.pw.println(k + "ok");
        ~问什么要pw.pw.xxx?