100分! JFreeChart 生成的图片在JSP中引用显示不出来! 问题解决后我还将双手奉上100分!我在Y盘的确看到生成的图片了,然后我将图片拷贝到D盘根目录!但是在另外一个JSP中引用这张图片是无法显示。如果将这张图片换成系统自带的图片可以显示![code=Java]<%@page contentType="text/html; charset=GB2312"%><html><head></head><body background="D:\1.gif"></body></html> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <%@ page contentType="text/html;charset=utf-8"%><%@ page import="org.jfree.data.general.DefaultPieDataset"%><%@ page import="org.jfree.chart.*"%><%@ page import="org.jfree.chart.plot.*"%><%@ page import="org.jfree.chart.servlet.ServletUtilities"%><%@ page import="org.jfree.chart.labels.StandardPieToolTipGenerator"%><%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%><%@ page import="org.jfree.chart.entity.StandardEntityCollection"%><%@ page import="java.io.*"%><%@ page import="javax.servlet.*"%><HTML> <HEAD> <% int airForce = (String)request.getParameter("airForce") == null ? 23 : Integer.parseInt((String)request.getParameter("airForce")); int army = (String)request.getParameter("army") == null ? 40 : Integer.parseInt((String)request.getParameter("army")); int navy = (String)request.getParameter("navy") == null ? 82: Integer.parseInt((String)request.getParameter("navy")); System.out.println("airForce: "+airForce); System.out.println("army: "+army); System.out.println("navy: "+navy);%><TITLE>投票结果展示</TITLE> </HEAD> <BODY> <% DefaultPieDataset data = new DefaultPieDataset(); //数据初始化 data.setValue("air",airForce); data.setValue("army",army); data.setValue("navy",navy); //HttpSession session = request.getSession(); PiePlot3D plot = new PiePlot3D(data);//生成一个3D饼图 //plot.setURLGenerator(new StandardPieURLGenerator("DegreedView.jsp"));//设定图片链接 JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true); chart.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色 ////// chart.setTitle("reult");//可选,设置图片标题 /////// plot.setToolTipGenerator(new StandardPieToolTipGenerator()); ////// StandardEntityCollection sec = new StandardEntityCollection(); ////// ChartRenderingInfo info = new ChartRenderingInfo(sec); ////// PrintWriter w = new PrintWriter(out);//输出MAP信息 //500是图片长度,300是图片高度 //String filename = ServletUtilities.saveChartAsPNG(chart,500,300,info,session); //System.out.println("**"+request.getContextPath()); //String realPath = request.getServletPath(); //System.out.println("##"+realPath); // File tempFile = File.createTempFile("111", ".gif", // new File("Y:\\filePath")); // ChartUtilities.saveChartAsPNG(tempFile, chart,500 ,300 , info); File tempFile = new File("Y:\\filePath\\1.gif"); try { ChartUtilities.saveChartAsPNG(tempFile, chart, 500, 300, null); } catch (IOException e) { e.printStackTrace(); } //String filename = ServletUtilities.saveChartAsJPEG(chart,500,300,info,session); // ChartUtilities.writeImageMap(w,"map0",info,false); // String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename; %> </BODY> </HTML> 1.可能是你生成图片的格式有问题你用qq工具 截图 保存成 *.bmp 在放到 <body background="D:\1.gif"> 看看能不能显示或者<img src=""> 吧你1.gif 直接显示下 如果是显示个 X 那就是 图片格式有问题2.可能 你掉用这个页面的 时候还没有生成 你的那个图片 所以找不到 你说的第一种可能性还是有的,因为我用系统自带的图片编辑器打开生成的图片,并且另存为再放到D盘后可以显示这张图片!也就是我必须修改图片后才能再页面中显示!第二种是不可能的,因为,我是从Y盘把图片拷贝到D盘后再调用那个JSP的! 我觉得是在<body background="D:\1.gif"> 这句代码时,图片还没有生成。。建议不要在jsp写java代码 可以在background指向一个servlet然后在servlet中生成图片。这样是肯定可行的。 怎么试?直接用HTML方式打开图片吗? 我前阵子就做了一个报表也是jfreechart环境是 struts1 hibernate spring也用了 但和jfreechart没什么关联 呵呵我是把生成的图片放到form里 再到页面上读取显示 不是很难需要帮助 可以加我 你调用saveChartAsPNG生成图片,为何扩展名用gif?浏览器对显示图片格式的要求要高一些,不能随便起扩展名 你的Html怎么学到的,浏览器只认相对目录<body background="D:\1.gif"> 绝对目录的写法<body background="file:///D:\1.gif"> html中使用写绝对目录这种低级错误是不容许 png或者调用saveChartAsJPEG保存为jpg格式的 生成图片的时候,可以保存到WEB项目的相对路径中啊.比如在项目里建一个文件夹image,生成图片保存的时候,可以保存到String path=application.getRealPath("/image/");保存到path路径里,在JSP里就可以使用相对路径来引用这个图片了 String path=application.getRealPath("/image"); File tempFile = new File(path+"/1.gif"); 我再修改以前别人做的项目时,发现javaweb的程序里面的图片都时png格式的,当时我还纳闷的,为啥用这个格式呢,呵呵~~欣赏楼主,问题解决后,贴出指出答案位置所在。浏览这么久久没发现有几个这样做的楼主,大家应该学习才对呀~~ 我也出现了类似情况.试了两个方法,图片已经生成.jpg和.png两个文件,但都无法在jsp页面中显示.但不是显示红插.换了不是用jfreechart生成的图片在页面中是可以正常显示的. 跪求答案。。 求java中文语音识别例子 正则表达式问题??急,提取天气预报信息。 二位数组如何分配动态空间??? RMI 中客户端程序能和服务端程序保持 长链接吗? 一个简单的程序,请问错误在哪里 在JAVA中怎么实现消息队列呀? 同事生了个胖小子点名让我给提供几个有创意的名字,不忍心让她失望 请问大家:这个程序只有几行,书上抄的,编译出错,问题在哪? linux下java如何得到当前主线程的线程ID号? JAVA的一个问题 java如何连接SQL server 2005数据库
<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.chart.*"%>
<%@ page import="org.jfree.chart.plot.*"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.labels.StandardPieToolTipGenerator"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="java.io.*"%>
<%@ page import="javax.servlet.*"%><HTML>
<HEAD>
<%
int airForce = (String)request.getParameter("airForce") == null ? 23 : Integer.parseInt((String)request.getParameter("airForce"));
int army = (String)request.getParameter("army") == null ? 40 : Integer.parseInt((String)request.getParameter("army"));
int navy = (String)request.getParameter("navy") == null ? 82: Integer.parseInt((String)request.getParameter("navy"));
System.out.println("airForce: "+airForce);
System.out.println("army: "+army);
System.out.println("navy: "+navy);%>
<TITLE>投票结果展示</TITLE>
</HEAD> <BODY>
<%
DefaultPieDataset data = new DefaultPieDataset();
//数据初始化
data.setValue("air",airForce);
data.setValue("army",army);
data.setValue("navy",navy);
//HttpSession session = request.getSession(); PiePlot3D plot = new PiePlot3D(data);//生成一个3D饼图
//plot.setURLGenerator(new StandardPieURLGenerator("DegreedView.jsp"));//设定图片链接
JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色
////// chart.setTitle("reult");//可选,设置图片标题
/////// plot.setToolTipGenerator(new StandardPieToolTipGenerator());
////// StandardEntityCollection sec = new StandardEntityCollection();
////// ChartRenderingInfo info = new ChartRenderingInfo(sec);
////// PrintWriter w = new PrintWriter(out);//输出MAP信息
//500是图片长度,300是图片高度
//String filename = ServletUtilities.saveChartAsPNG(chart,500,300,info,session);
//System.out.println("**"+request.getContextPath());
//String realPath = request.getServletPath();
//System.out.println("##"+realPath);
// File tempFile = File.createTempFile("111", ".gif",
// new File("Y:\\filePath"));
// ChartUtilities.saveChartAsPNG(tempFile, chart,500 ,300 , info);
File tempFile = new File("Y:\\filePath\\1.gif");
try
{
ChartUtilities.saveChartAsPNG(tempFile, chart, 500, 300, null);
}
catch (IOException e)
{
e.printStackTrace();
}
//String filename = ServletUtilities.saveChartAsJPEG(chart,500,300,info,session);
// ChartUtilities.writeImageMap(w,"map0",info,false); // String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%> </BODY>
</HTML>
你用qq工具 截图 保存成 *.bmp 在放到 <body background="D:\1.gif"> 看看能不能显示
或者<img src=""> 吧你1.gif 直接显示下 如果是显示个 X 那就是 图片格式有问题
2.可能 你掉用这个页面的 时候还没有生成 你的那个图片 所以找不到
第二种是不可能的,因为,我是从Y盘把图片拷贝到D盘后再调用那个JSP的!
这句代码时,图片还没有生成。。
建议不要在jsp写java代码 可以在background指向一个servlet
然后在servlet中生成图片。这样是肯定可行的。
直接用HTML方式打开图片吗?
也是jfreechart环境是 struts1 hibernate spring也用了 但和jfreechart没什么关联 呵呵我是把生成的图片放到form里 再到页面上读取显示 不是很难需要帮助 可以加我
浏览器对显示图片格式的要求要高一些,不能随便起扩展名
<body background="D:\1.gif">
绝对目录的写法
<body background="file:///D:\1.gif">
png或者调用saveChartAsJPEG保存为jpg格式的
比如在项目里建一个文件夹image,生成图片保存的时候,可以保存到
String path=application.getRealPath("/image/");
保存到path路径里,在JSP里就可以使用相对路径来引用这个图片了
File tempFile = new File(path+"/1.gif");