﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-JAVA历程-文章分类-java高端技术</title><link>http://www.blogjava.net/shichengjun1984/category/22436.html</link><description>希望我的这个博客能给那些想在java的海洋中拼搏的人有所帮助。谢谢光临！</description><language>zh-cn</language><lastBuildDate>Sun, 25 Oct 2009 18:34:53 GMT</lastBuildDate><pubDate>Sun, 25 Oct 2009 18:34:53 GMT</pubDate><ttl>60</ttl><item><title>JFreeChart图表生成在内存中,在页面显示的问题</title><link>http://www.blogjava.net/shichengjun1984/articles/298206.html</link><dc:creator>I LOVE JAVA</dc:creator><author>I LOVE JAVA</author><pubDate>Wed, 14 Oct 2009 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/shichengjun1984/articles/298206.html</guid><wfw:comment>http://www.blogjava.net/shichengjun1984/comments/298206.html</wfw:comment><comments>http://www.blogjava.net/shichengjun1984/articles/298206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/shichengjun1984/comments/commentRss/298206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/shichengjun1984/services/trackbacks/298206.html</trackback:ping><description><![CDATA[<p>采用工具类ChartUtil和DisplayChart（jfreechart的servlet）输出 </p>
<p>将javabean里的生成图片的方法写的一个工具类ChartUtil里面。</p>
<p>1 ．添加工具类ChartUtil <br />
public class ChartUtil { <br />
// 产生时间序列图，返回图片名称 <br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<ol class="dp-j">
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;String&nbsp;generatePieChart(DefaultPieDataset&nbsp;dataset,String&nbsp;title,</span><span class="keyword">int</span><span>&nbsp;width,</span><span class="keyword">int</span><span>&nbsp;height,HttpSession&nbsp;session,&nbsp;PrintWriter&nbsp;pw)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class="alt"><span>String&nbsp;filename&nbsp;=&nbsp;</span><span class="keyword">null</span><span>;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;</span><span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;</span><span class="keyword">if</span><span>&nbsp;(session&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class="alt"><span>ChartDeleter&nbsp;deleter&nbsp;=&nbsp;(ChartDeleter)session.getAttribute(</span><span class="string">"JFreeChart_Deleter"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;session.removeAttribute(</span><span class="string">"JFreeChart_Deleter"</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;session.setAttribute(</span><span class="string">"JFreeChart_Deleter"</span><span>,&nbsp;deleter);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class="alt"><span>JFreeChart&nbsp;chart&nbsp;=&nbsp;ChartFactory.createPieChart3D(&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class=""><span>title,&nbsp;&nbsp;</span><span class="comment">//&nbsp;chart&nbsp;title&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>dataset,&nbsp;</span><span class="comment">//&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span class="keyword">true</span><span>,&nbsp;&nbsp;</span><span class="comment">//&nbsp;include&nbsp;legend&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span class="keyword">true</span><span>,&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span class="keyword">false</span><span>&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span class="comment">//&nbsp;&nbsp;Write&nbsp;the&nbsp;chart&nbsp;image&nbsp;to&nbsp;the&nbsp;temporary&nbsp;directory&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span>ChartRenderingInfo&nbsp;info&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;ChartRenderingInfo(</span><span class="keyword">new</span><span>&nbsp;StandardEntityCollection());&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span class="comment">//If&nbsp;the&nbsp;last&nbsp;parameter&nbsp;is&nbsp;null,&nbsp;the&nbsp;chart&nbsp;is&nbsp;a&nbsp;"one&nbsp;time"-chart&nbsp;and&nbsp;will&nbsp;be&nbsp;deleted&nbsp;after&nbsp;the&nbsp;first&nbsp;serving.&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class=""><span class="comment">//If&nbsp;the&nbsp;last&nbsp;parameter&nbsp;is&nbsp;a&nbsp;session&nbsp;object,&nbsp;the&nbsp;chart&nbsp;remains&nbsp;until&nbsp;session&nbsp;time&nbsp;out.&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>filename&nbsp;=&nbsp;ServletUtilities.saveChartAsPNG(chart,&nbsp;width,&nbsp;height,&nbsp;info,&nbsp;session);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class=""><span class="comment">//&nbsp;&nbsp;Write&nbsp;the&nbsp;image&nbsp;map&nbsp;to&nbsp;the&nbsp;PrintWriter&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;ChartUtilities.writeImageMap(pw,&nbsp;filename,&nbsp;info,</span><span class="keyword">true</span><span>);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;pw.flush();&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class="alt"><span>}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(Exception&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;System.out.println(</span><span class="string">"Exception&nbsp;-&nbsp;"</span><span>&nbsp;+&nbsp;e.toString());&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;e.printStackTrace(System.out);&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class=""><span>&nbsp;filename&nbsp;=&nbsp;</span><span class="string">"picture_error.png"</span><span>;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span class="keyword">return</span><span>&nbsp;filename;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li class="alt"><span>}&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
<script>render_code();</script>
<p>&nbsp;</p>
<p>2、在action里统计数据，设置好数据集dataset。传到页面</p>
<p>3、 在页面里取出 <br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<ol class="dp-xml">
    <li class="alt"><span><span>DefaultPieDataset&nbsp;</span><span class="attribute">piedataset</span><span>=(DefaultPieDataset)request.getAttribute("piedataset");&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>String&nbsp;</span><span class="attribute">p</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">ChartUtil</span><span>.generatePieChart(piedataset,"&nbsp;项目收支线图",500,300,null,&nbsp;new&nbsp;PrintWriter(out));&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>String&nbsp;</span><span class="attribute">p1</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">request</span><span>.getContextPath()&nbsp;+&nbsp;"/servlet/DisplayChart?</span><span class="attribute">filename</span><span>="&nbsp;+&nbsp;p; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">img</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">"&lt;%=&nbsp;p1&nbsp;%&gt;"</span><span>&nbsp;</span><span class="attribute">width</span><span>=</span><span class="attribute-value">500</span><span>&nbsp;</span><span class="attribute">height</span><span>=</span><span class="attribute-value">300</span><span>&nbsp;</span><span class="attribute">border</span><span>=</span><span class="attribute-value">0</span><span>&nbsp;</span><span class="attribute">usemap</span><span>=</span><span class="attribute-value">"#&lt;%=&nbsp;p&nbsp;%&gt;"</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
<script>render_code();</script>
<p>&nbsp;</p>
<p>4、在web.xml中添加 <br />
<div class="code_title">代码</div>
<div class="code_div">
<div class="dp-highlighter">
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>DisplayChart</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>org.jfree.chart.servlet.DisplayChart</span><span class="tag">&lt;/</span><span class="tag-name">servlet-class</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span class="tag">&lt;/</span><span class="tag-name">servlet</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>DisplayChart</span><span class="tag">&lt;/</span><span class="tag-name">servlet-name</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>/servlet/DisplayChart</span><span class="tag">&lt;/</span><span class="tag-name">url-pattern</span><span class="tag">&gt;</span><span>&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li class=""><span class="tag">&lt;/</span><span class="tag-name">servlet-mapping</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
<script>render_code();</script>
<img src ="http://www.blogjava.net/shichengjun1984/aggbug/298206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/shichengjun1984/" target="_blank">I LOVE JAVA</a> 2009-10-14 14:16 <a href="http://www.blogjava.net/shichengjun1984/articles/298206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>