servlet可以绘图,也是用Graphics这个类,但是要注意的一点是servlet是输出html的,所以要设置contentType="image/gif",这样你就不能做到同时在页面上有图有字了,所以一般应该是编译以后,把applet作的图存成gif文件,指这文件名和位置,在servlet中显示这个图片文件即可。

解决方案 »

  1.   

    因为把applet作的图存成gif文件涉及到本机(存放applet程序)上读写文件问题,要做数字签名 ,还有如果每个用户访问该applet时都在服务机上产生一个gif文件或者产生同一个gif就把前一个用户要的gif文件覆盖了,这也是一个问题
      

  2.   


    对,你说的正是问题所在。我想你是想动态显示图形的(K线图或其它什么的?),如果是静态图(或做成静态图无所谓)的话,是可以照我上面所说的来做,但是如果是动态图,一般是直接嵌applet的,何必要存成gif文件呢?这是一。其二,有一点要更正,其实所说的保存gif文件,不可能是存在客户端的,因为servlet要显示的gif文件也只能是在服务器端嘛(就象html页中加入图片一样),所以你可以为不同用户生成不同的目录,专门存放它看到的gif图片(没办法的办法),当然这要求是注册用户才行。这样就不会涉及到数字签名之类的问题了。
      

  3.   

       在apple中是动态显示图形,当用户点击按钮之后把当前画面作为gif图形传到servlet,因为客户想可以把当前图形保存或copy到excel中,我在java中没法实现,但ie中对网页中的图片自带这些功能,我的想法是把当前画面作为gif图形传到servlet端后,在通过servlet把该图形返回到客户端
      

  4.   


    请看一下我在另一个帖子回的话 http://expert.csdn.net/Expert/topic/517/517613.shtm也许这种效果就是你想要的??你试一下吧,如果我有空我也会试一下的。:)
      

  5.   


    问题已解决,就是用img src="一个servlet的链接",这样就可以显示动态图像了,而且用户也可以利用IE的功能实现打印和保存了。
      

  6.   

     sharetop:
      这种方法是最好的了,
      但我的image在apple中绘的,你所提供的那个例子,他是在servlet绘的吧,现在的问题是怎样把在applet中绘image传个servlet?生成gif图形文件大约9k之间
      

  7.   


    原来你是问如何把一个Image对象从applet传到servlet中?是吧??为什么不重新画一个呢?用同样的方法在servlet中再画一次,即可,这是最简单的了。否则用URLConnection来实现也是可以的,它可以在applet与servlet中传递对象,包括Image对象也行。
      

  8.   

    在applet与servlet中传递Image对象,我试过了,不行呀,你是怎么实现的
      

  9.   

    我的代码:
      GIFEncoder gifEnc;
      showStatus("connecting!");
      java.net.URL url=new java.net.URL (URLString);
      java.net.URLConnection connection = url.openConnection();
      connection.setUseCaches(false);
      connection.setDoOutput(true);
      connection.setDoInput(true);
          // Data will always be written to a byte array buffer so
          // that we can tell the server the length of the data
      ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
          // Create the output stream to be used to write the data to our buffer
      ObjectOutputStream out = new ObjectOutputStream(byteOut);
      gifEnc=new GIFEncoder(bi);
      out.writeObject(gifEnc);
          // Flush the data to the buffer
      out.flush();
      byte buf[] = byteOut.toByteArray();
      connection.setRequestProperty("Content-type","image/gif");
      connection.setRequestProperty("Content-length","" + buf.length);
            // Get the output stream to the server and send our data buffer
      DataOutputStream dataOut =  new DataOutputStream(connection.getOutputStream());
      dataOut.write(buf);
          // Flush the output stream and close it
      dataOut.flush();
      dataOut.close();
      showStatus("sending!"); 
      

  10.   

    我记得servlet有个setAttribute的方法吧(把image放到那里传过去).