jsp页面绘制动态图象问题?(大家看看!谢谢!)
我在jsp页面绘制图象,图象使用方法为:
BufferedImage image = new BufferedImage(100,100, BufferedImage.TYPE_INT_RGB);
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
sos.close();
我的程序可以绘制我想要的图象:问题是:
不断的刷新页面,就会抛出IO异常java.io.IOException: reading encoded JPEG Stream
1。如果程序都写在jsp页面中,你按着f5刷新,就不会出现异常问题。
2。如果使用bean,把以上程序都写到bean中,就会抛出上述异常。
请问怎么解决这样的问题?
问题点数:0、回复次数:22Top
1 楼llhdf(塞外浪子)回复于 2005-02-01 14:40:58 得分 0
帮看看,谢谢!Top
2 楼llhdf(塞外浪子)回复于 2005-02-01 14:42:29 得分 0
帮看看,谢谢!
Top
3 楼llhdf(塞外浪子)回复于 2005-02-01 14:42:48 得分 0
帮看看,谢谢!
Top
4 楼hhddff(taizi)回复于 2005-02-02 10:27:02 得分 0
upTop
5 楼yys79(shart-shoot)回复于 2005-02-02 10:34:11 得分 0
不知道你怎么写的bean,贴出来看看Top
6 楼llhdf(塞外浪子)回复于 2005-02-02 14:28:44 得分 0
就是把上面那断程序,放在一个bean里,在使用jsp页面调用!我的bean还有很多功能,具体的功能就我说的那样!
1。使用以下代码,抛出异常java.io.IOException: reading encoded JPEG Stream
BufferedImage image = new BufferedImage(100,100, BufferedImage.TYPE_INT_RGB);
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
sos.close();
2。使用以下代码,抛出异常ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
ServletOutputStream sos = response.getOutputStream();
ImageIO.write(image, "jpeg", sos);
请问怎么能控制这种异常!,请问是不是让程序“异步”!Top
7 楼llhdf(塞外浪子)回复于 2005-02-02 14:28:52 得分 0
upTop
8 楼mxfhhh(为什么)回复于 2005-02-02 14:32:39 得分 0
记下来以前记得有这个东西Top
9 楼singedcat(以夢為馬)回复于 2005-02-02 14:40:48 得分 0
up2Top
10 楼llhdf(塞外浪子)回复于 2005-02-02 14:57:47 得分 0
大家看看!谢谢!Top
11 楼yanyan0328()回复于 2005-02-02 15:08:57 得分 0
把sos.close();替换成sos.flush ();
试试行不行?Top
12 楼llhdf(塞外浪子)回复于 2005-02-03 11:18:12 得分 0
大家有没有解决办法?Top
13 楼llhdf(塞外浪子)回复于 2005-02-03 11:18:24 得分 0
大家有没有解决办法?
Top
14 楼boneeater(狗狗)回复于 2005-02-03 11:28:25 得分 0
不会,学习and友情up.....Top
15 楼flyxxxxx()回复于 2005-02-03 11:29:53 得分 0
image.jsp:
<%@ page contextType="img/jpeg" %>
<%
out.clear();//一定要这一行
ServletOutputStream sos = response.getOutputStream();
//向sos中输出Image,在此之后不能输出任何文本数据
%>
使用:
<img src="image.jsp">Top
16 楼GJA106(中文字符)回复于 2005-02-03 11:37:08 得分 0
没有发生这种情况,不管怎么刷新,可能是楼主在其它地方有错。
<%@ page contentType="image/jpeg"
import="java.awt.*,
java.awt.image.*,
java.awt.Color,
java.awt.Font,
java.awt.Graphics,
java.awt.Image,
java.awt.image.BufferedImage,
java.io.IOException,
java.util.Random,
com.sun.image.codec.jpeg.*,
java.util.*"
%>
<%
String sRand = null;
int width = 80,height = 20;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_BGR); // 在内存中创建图象
Graphics g = image.getGraphics();// 获取图形上下文
Random random = new Random();//生成随机类
int fc = 88,bc = 100;
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int gr=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
Color color = new Color(r,gr,b);
g.setColor(color);// 初始化背景色
g.fillRect(0,0,width,height);//初始化
//g.drawRect(0,0,width-1,height-1);//画边框
g.setFont(new Font("Times New Roman",Font.PLAIN,18));//设定字体
fc = 100;bc = 200;
r=fc+random.nextInt(bc-fc);
gr=fc+random.nextInt(bc-fc);
b=fc+random.nextInt(bc-fc);
color = new Color(r,gr,b);
g.setColor(color);//重新设置干扰线颜色
random = new Random();//生成随机类
for (int i=0; i<88; i++){
int x,y;
int x1,y1;
x = random.nextInt(width);
y = random.nextInt(height);
x1 = random.nextInt(88);
y1 = random.nextInt(88);
g.drawLine(x,y,x+x1,y+y1);
}
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(5+random.nextInt(50),10+random.nextInt(80),10+random.nextInt(80)));
//调用函数出来的颜色相同,直接生成
g.drawString(rand,13*i+6,16);
}
g.dispose();
ServletOutputStream sos = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(sos);
encoder.encode(image);
%>Top
17 楼llhdf(塞外浪子)回复于 2005-02-05 11:12:05 得分 0
你写在bean中,就会报错!。
在jsp页面不会报错!(可能是被jsp 异常给捕获了)Top
18 楼llhdf(塞外浪子)回复于 2005-02-05 11:12:56 得分 0
upTop
19 楼GJA106(中文字符)回复于 2005-02-05 11:23:36 得分 0
"java.io.IOException: reading encoded JPEG Stream"是因为有些资源没有close导致的,不继的去刷新,有没有可能:新创建的资源,没有close掉,又创建一次?Top
20 楼llhdf(塞外浪子)回复于 2005-02-10 11:54:52 得分 0
我加上了同步,依然抛异常,请问怎么办?Top
21 楼llhdf(塞外浪子)回复于 2005-02-12 11:28:38 得分 0
我加上了同步,依然抛异常,请问怎么办?Top
22 楼llhdf(塞外浪子)回复于 2005-02-21 09:42:21 得分 0
请问怎么回事?Top




