servlet可以绘图,也是用Graphics这个类,但是要注意的一点是servlet是输出html的,所以要设置contentType="image/gif",这样你就不能做到同时在页面上有图有字了,所以一般应该是编译以后,把applet作的图存成gif文件,指这文件名和位置,在servlet中显示这个图片文件即可。
解决方案 »
- Freemarker Template 的高手来看看吧
- Tomcat端口错误引发异常
- 时间控件问题?
- jsp解析xml问题,各位"大虾"都来帮帮我,200分没问题(我只能另外开一贴,csdn不让我一下子放200分),解决立刻结贴!
- poi本地上传服务器并导入数据库
- 各位大哥,请问j2ee中的一些框架能用在web上吗?
- 怎样使用jsp+sql2000进行数据库连接
- 客户要求建立邮件列表。有没有什么好方案呀(java\jsp\mailserver)?各位多多指教。
- Servlet有ServletContext来共享信息,我想在Servlet和JSP之间共享信息,该怎么做?
- 大家有没有遇到这样的问题
- 奇怪!奇怪!我用jbuilder编jsp程序,从数据库中取出的字符串型字段却显示16进制数
- 请进来高手
对,你说的正是问题所在。我想你是想动态显示图形的(K线图或其它什么的?),如果是静态图(或做成静态图无所谓)的话,是可以照我上面所说的来做,但是如果是动态图,一般是直接嵌applet的,何必要存成gif文件呢?这是一。其二,有一点要更正,其实所说的保存gif文件,不可能是存在客户端的,因为servlet要显示的gif文件也只能是在服务器端嘛(就象html页中加入图片一样),所以你可以为不同用户生成不同的目录,专门存放它看到的gif图片(没办法的办法),当然这要求是注册用户才行。这样就不会涉及到数字签名之类的问题了。
请看一下我在另一个帖子回的话 http://expert.csdn.net/Expert/topic/517/517613.shtm也许这种效果就是你想要的??你试一下吧,如果我有空我也会试一下的。:)
问题已解决,就是用img src="一个servlet的链接",这样就可以显示动态图像了,而且用户也可以利用IE的功能实现打印和保存了。
这种方法是最好的了,
但我的image在apple中绘的,你所提供的那个例子,他是在servlet绘的吧,现在的问题是怎样把在applet中绘image传个servlet?生成gif图形文件大约9k之间
原来你是问如何把一个Image对象从applet传到servlet中?是吧??为什么不重新画一个呢?用同样的方法在servlet中再画一次,即可,这是最简单的了。否则用URLConnection来实现也是可以的,它可以在applet与servlet中传递对象,包括Image对象也行。
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!");