环境:
1、websphere6,使用插件模式,通过websphere的httpserver的80端口访问其j2eeserver。
2、jfeechart,常规使用。
问题:
jfeechart图片生成没有问题,就是图片显示不了,表现为左上角有一个叉。
解决方法:
不要使用插件模式,通过websphere的httpserver访问其j2eeserver,将j2eeserver的端口直接设为80,图片就显示正常。
思考:
jfreechart的图片显示方法是:
<%
String pieGraphURL = request.getContextPath() + "/DisplayChart?filename=" + piefilename;
%>
再看一下DisplayChart调用的核心源码:
public static void sendTempFile(File file, HttpServletResponse response,
String mimeType) throws IOException {
if (file.exists()) {
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(file)
);
// Set HTTP headers
if (mimeType != null) {
response.setHeader("Content-Type", mimeType);
}
response.setHeader("Content-Length", String.valueOf(file.length()));
SimpleDateFormat sdf = new SimpleDateFormat(
"EEE, dd MMM yyyy HH:mm:ss z"
);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
response.setHeader(
"Last-Modified", sdf.format(new Date(file.lastModified()))
);
BufferedOutputStream bos = new BufferedOutputStream(
response.getOutputStream()
);
byte[] input = new byte[1024];
boolean eof = false;
while (!eof) {
int length = bis.read(input);
if (length == -1) {
eof = true;
}
else {
bos.write(input, 0, length);
}
}
bos.flush();
bis.close();
bos.close();
}
else {
throw new FileNotFoundException(file.getAbsolutePath());
}
return;
}
可见在web页面上显示时分两步:
1、初始化img容器;
2、调用DisplayChart这个servlet将图片数据写进来。
可是在走httpserver时第二步不会起作用的。
posted on 2006-03-08 21:14
野草 阅读(891)
评论(0) 编辑 收藏 所属分类:
deploy