jfreechart图片已近生成,但不能在页面显示

zizhu114 2008-10-27 06:10:31
我用tomcat5.5,jfreechart作图表,图片已经生成,但在tomcat5.5的temp目录下,我不知该如何控制图片生成路径,
使图片生成在工程目录中.另外,页面图片显示路径应该如何写
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsweifen 2008-10-28
  • 打赏
  • 举报
回复
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
Ami121 2008-10-28
  • 打赏
  • 举报
回复
路径与web.xml配置有关系
web.xml配置文件

<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/image/Chart</url-pattern>
</servlet-mapping>

jsp代码

<jsp:useBean id="barchart01" scope="session"
class="com.chart.SeriesXY" />
<%
String fileName = barchart01.getImg(request.getSession(), out);
String graphURL = request.getContextPath()
+ "/image/Chart?filename=" + fileName;
%>
<br/>
<img src="<%= graphURL %>" border="0" usemap="#<%=fileName %>" />
<br/>
sunyujia 2008-10-27
  • 打赏
  • 举报
回复
呵呵,思路不一样,还是accp206 的实现好,因为tomcat没准还要用java.io.tmpdir这个属性呢.
sunyujia 2008-10-27
  • 打赏
  • 举报
回复
关键源码如下
   File file = new File(System.getProperty("java.io.tmpdir"), filename);
if (!file.exists()) {
throw new ServletException("File '" + file.getAbsolutePath()
+ "' does not exist");
}


从上面源码可以看出,通过设置jvm变量即可
accp206 2008-10-27
  • 打赏
  • 举报
回复
[接2楼]
哦,多删了一句!
生成图片的那句代码中的 info 是这样创建的:
ChartRenderingInfo info = new ChartRenderingInfo();
accp206 2008-10-27
  • 打赏
  • 举报
回复
给出关键代码以供楼主参考。

这是生成图片文件的Servlet中的代码:

JFreeChart chart = ...;//获取图表
String chartSrc = "chart.jpg";//图片名称
//以下这句代码可以解决楼主第一个问题:控制图片生成路径,使图片生成在工程目录中。
String realPath = getServletContext().getRealPath( chartSrc );
//生成图片
FileOutputStream out = new FileOutputStream( realPath );
ChartUtilities.writeChartAsJPEG(out, chart, 600, 400, info);
out.close();
//把图片路径保存到request中,以便在页面上使用
request.setAttribute("chartSrc", chartSrc);
//转发到显示图片的页面
request.getRequestDispatcher("xxx.jsp").forward(request, response);


这是JSP中显示图片的代码:
<img style="border:none;" src="${ chartSrc }" />
yuanjun_xf 2008-10-27
  • 打赏
  • 举报
回复
不能显示的这个问题我们也遇到过,这个可能是你们的生成代码的问题!
保存文件的类型不对!

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧