??xml version="1.0" encoding="utf-8" standalone="yes"?>91福利在线视频,jizz一区二区,亚洲精品456http://www.aygfsteel.com/libin2722/category/25734.htmlzh-cnTue, 11 Sep 2007 04:57:24 GMTTue, 11 Sep 2007 04:57:24 GMT60JFreeChart ?webwork 中的应用 http://www.aygfsteel.com/libin2722/articles/144170.htmlC物C物Tue, 11 Sep 2007 02:17:00 GMThttp://www.aygfsteel.com/libin2722/articles/144170.htmlhttp://www.aygfsteel.com/libin2722/comments/144170.htmlhttp://www.aygfsteel.com/libin2722/articles/144170.html#Feedback0http://www.aygfsteel.com/libin2722/comments/commentRss/144170.htmlhttp://www.aygfsteel.com/libin2722/services/trackbacks/144170.html   webwork是当今流行的J2EE几大架构之一Q在实际的项目中Q我们往往要在webwork的输出流中调用一个图表chartQ代替直接用response.out输出。那么我们应该怎么样去实现呢?本文详l阐qJFreeChart在webwork中的应用。本文调试环境ؓwindows2000+tomcat5.0。共分三个部分:
  1QJFreeChart ?
  2Qwebwork介及webworkQJFreeChart应用环境的配|?br />   3QJFreeChart在webwork中的应用的具体例?br />   
  <B>一Q?JFreeChart 介:</B>
  JFreeChart是开放源代码目Q它主要用来各种各样的图表,q些图表包括Q饼图、柱状图(普通柱状图以及堆栈q?、线图、区域图、分布图、؜合图、甘特图以及一些A表盘{等?br />   一.JFreeChart创徏WEB图表的基本知?br />   JFreeChart主要是由三个cL成:
  org.jfree.chart.servlet.ChartDeleter
  org.jfree.chart.servlet.DisplayChart
  org.jfree.chart.servlet.ServletUtilities
  在下面做一下简单的介绍Q?br />   ChartDeleter l承自HttpSessionBindingListenerQ用于实现当Session 关闭Ӟ删除
  临时目中的图象文件?br />   ServletUtilities有一pdҎQ?br />   saveChartAs*;saveChartAs*是把图表按照不同的Ş式存储ؓ图象Q?br />   sendTempFileҎ被重载了很多ơ,用于把文件流发送response;
  DisplayChartl承自Httpservlet 用于处理昄图象Q?br />   
  <B>二:webwork介及webworkQJFreeChart应用环境的配|?lt;/B>
  WebWork是一个源代码开攄Web应用框架Q用于简化基于Web的应用开发?br />   WebWork的最大优Ҏ它的单性和灉|性。WebWork有一个很的APIQ它使开发者可以迅速进行开发工作?br />   WebWork是许多特性和适用性的l合Q包括用variour view技术,
  例如JavaServer Pages(JSP),Velocity,Extensible Stylesheet Language Transformations
  Specification(XSLT)和JasperReporters。还有,webwork对JFreechart有非常好的支持?br />   从这里下载webwork-2.0-beta2.zip?br />   (https://webwork.dev.java.net/servlets/ProjectDocumentList)
  解压~文Ӟ你可以在webwork-2.0\lib\optional目录下找到jfreechart-0.9.13.jar?br />   你也可以从这里下载最新的jfreechart-0.9.15.zip?br />   Qhttp://www.jfree.org/jfreechart/index.htmlQ?br />   本文使用的是jfreechart-0.9.15.zip?br />   web应用的目录结构图如下所C:
  /webapp/WEB-INF
  /webapp/WEB-INF/web.xml
  /webapp/WEB-INF/webwork.tld
  /webapp/WEB-INF/classes
  /webapp/WEB-INF/classes/xwork.xml
  /webapp/WEB-INF/lib
  接下来请务必下面这些包攑֜/webapp/WEB-INF/lib 目录下?br />   1。commons-logging.jar
  2。ognl-2.5.1.jar
  3。oscore-2.2.1.jar
  4。xwork-1.0-beta.jar
  5。webwork-2.0-beta.jar
  下面是可以选择的包Q具体根据项目需要来军_是否dQ?
  cos-multipart.jar
  pell-multipart.jar
  velocity-dep-1.3.jar
  2.1 配置你的xwork.xml
  文g像下面例子一P注意一定要包含webwork-default.xml?br />   <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
  
  "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
  <xwork>
    <include file="webwork-default.xml"/> 
    <package name="default" extends="webwork-default">
    ...
    </package>
  </xwork>
  
  webwork-default.xmlq个文g在webwork-2.0-beta.jar里面?br />   2.2 修改web.xml文g
  修改web.xml文g以包含webwork的设|,如何讄的内容,请察?br />   $WEBWORK/src/resource/web/WEB-INF/web.xml文g?br />   2.3 Taglib部分的选择
  如果你不打算使用taglib、Velocity、或者XSLTQ仅仅只需要在web.xml中不要包含这些内容就可以了?br />   2.4 Log的设|?br />   Webwork使用log4jQ如果你的app server没有安装log4jQ你需要增加log4jQ复制log4j.jar文g到合适的lib目录。如果你使用tomcatQ那么安装目录是$TOMCAT_HOME\libQ当然也可以安装C的web应用的\径。但需要注意的是如果appserver也适用log4jQ你需要小心版本冲H?br />   2.5 解压~jfreechart-0.9.15.zip
  jfreechart-0.9.15目录下的jfreechart-0.9.15.jar和lib/jcommon-0.9.0.jar,lib/gnujaxp.jar都是开发运行需要的文gQ把q三个文件放|到/webapp/WEB-INF/lib目录下?br />   
  <B>?JFreeChart在webwork中的应用的具体例?lt;/B>
  在进行上面的步骤后,我们要q行具体的开发过E?
  步骤Q首先在xwork.xml -定义result-types
    <result-types>
    <result-type name="chart" class="pawpaw.test.ChartResult"/>
    </result-types>
  
    然后在xwork.xml - 定义action
  <action name="viewModerationChart" class="pawpaw.test.ViewModerationChartAction">
   <result name="success" type="chart">
    <param name="width">400</param>
    <param name="height">300</param> </result>
  </action>
  
  其中param里面定义的是chart图表的长宽?br />   然后在web.xml文g中增加以下内容:
    <servlet>
      <servlet-name>DisplayChart</servlet-name>
      <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>DisplayChart</servlet-name>
      <url-pattern>/servlet/DisplayChart</url-pattern>
    </servlet-mapping>
  
  部分源代码如下:
  package pawpaw.test;
  
  import com.opensymphony.webwork.ServletActionContext;
  import com.opensymphony.xwork.ActionInvocation;
  import com.opensymphony.xwork.Result;
  import org.jfree.chart.ChartUtilities;
  import org.jfree.chart.JFreeChart;
  import java.io.OutputStream;
  import javax.servlet.http.HttpServletResponse;
  /*
   * <p>Description: 把chart文g换成是通过HttpServletResponse
   *  对象获取到的输出在览器中输出</p>
   * author: pawpaw
   * @version 1.0 12/15/2003
   */
  public class ChartResult implements Result {
    JFreeChart chart;
    boolean chartSet = false;
    private int height;
    private int width;
  
    public void setChart(JFreeChart chart) {
      this.chart = chart;
      chartSet = true;
    }
    //讄囄的长?br />     public void setHeight(int height) {
      this.height = height;
    }
    //讄囄的宽?br />     public void setWidth(int width) {
      this.width = width;
    }
  
    public void execute(ActionInvocation invocation) throws Exception {
      JFreeChart chart = null;
  
      if (chartSet) {
        chart = this.chart;
      } else {
        chart = (JFreeChart) invocation.getStack().findValue("chart");
      }
  
      if (chart == null) {
        throw new NullPointerException("No chart found");
      }
      
      //把文件流换成是通过HttpServletResponse对象获取到的输出?br />       HttpServletResponse response = ServletActionContext.getResponse();
      OutputStream os = response.getOutputStream();
      ChartUtilities.writeChartAsPNG(os, chart, width, height);
      os.flush();
    }
  }
  创徏JFreeChart的actioncR?br />   package pawpaw.test;
  
  import java.awt.Insets;
  import java.awt.Font;
  import java.io.PrintWriter;
  import javax.servlet.http.HttpSession;
  import org.jfree.data.*;
  import org.jfree.chart.*;
  import org.jfree.chart.plot.*;
  import org.jfree.chart.entity.*;
  import org.jfree.chart.urls.*;
  import org.jfree.chart.servlet.*;
  import org.jfree.chart.labels.StandardPieToolTipGenerator;
  import org.jfree.util.Rotation;
  import com.opensymphony.xwork.ActionSupport;
  /*
   *<p>Description: 输出一条斜Uchart</p>
   * author: pawpaw
   * @version 1.0 12/15/2003
   */
  public class ViewModerationChartAction extends ActionSupport { 
    private JFreeChart chart;
    public String execute() throws Exception {
     // 创徏chart文g数据?br />      XYSeries dataSeries = new XYSeries(null);
     for

C物 2007-09-11 10:17 发表评论
]]>
使用 JFreeChart来创建基于web的图?http://www.aygfsteel.com/libin2722/articles/144171.htmlC物C物Tue, 11 Sep 2007 02:17:00 GMThttp://www.aygfsteel.com/libin2722/articles/144171.htmlhttp://www.aygfsteel.com/libin2722/comments/144171.htmlhttp://www.aygfsteel.com/libin2722/articles/144171.html#Feedback0http://www.aygfsteel.com/libin2722/comments/commentRss/144171.htmlhttp://www.aygfsteel.com/libin2722/services/trackbacks/144171.html   
  一、JFreeChart目?/strong>
  JFreeChart是开放源代码站点SourceForge.net上的一个JAVA目Q它主要用来各种各样的图表,q些图表包括Q饼图、柱状图(普通柱状图以及堆栈q?、线图、区域图、分布图、؜合图、甘特图以及一些A表盘{等。这些不同式L图表基本上可以满目前的要求。ؓ了减篇q本文主要介l前面三U类型的图表Q读者可以触cL通去开发其他样式的图表。下面几个是JFreeChart产生的这三种cd图表的结果:
  
 

  
?

  
 

  
?

  
 

  
?

  上面的三个图都是表示四个季度的某个品的销量信息。在l箋下面节之前必须先准备好开发环境,因ؓ是基于WEB览器的图表展现Q因此需要一个Servlet引擎或者是J2EE应用服务器(例如WebSphereQTomcat{)。WEB环境的搭建就不篏赘了Q读者根据喜好自行安装。JFreeChart引擎本n需要到SourceForge.net上下载,地址如下Q?
  JFreeChart主页Qhttp://www.jfree.org/jfreechart/index.html
  JFreeChart下蝲面Qhttp://sourceforge.net/projects/jfreechart/
  
  下蝲的时候需要注意的是必M载两个文ӞJFreeChart以及Jcommon。目前最新配套版本是QJFreeChart 0.9.11 Jcommon 0.8.6
  
  q里有点W者在开发中遇见的问题需要注意的是:在用Eclipse开发的时候会报一个莫名其妙的错误Q错误可能指向某个类文g的第一行。遇到这L问题一般是因ؓ没有把Jcommon的jar包设|到目的类路径中的~故。具体的原因不祥?Q还有log4j{也咬一起导入)?br />   
  二、解读JFreeChart的源码结?/strong>
  在开始用JFreeChart之前我们有必要先大概了解一下JFreeChart本n的结构以及它所带一些例子程序,q样有助于我们下一步自行开发。下载JFreeChart包后已经带有非常丰富的例子,因ؓJFreeChartq个目本n的用文档非常少Q因此学习它最好的办法是学习它所带的例子源码。在包org.jfree.chart.demo中有几十个文件用于展CJFreeChart所能支持的所有图表的l果。如果你的JDK是比较新的情况下可能在运行这些例子时会有问题Q现象如下:
  
  java.lang.UnsatisfiedLinkError: initDDraw
   at sun.awt.windows.Win32OffScreenSurfaceData.initDDraw(Native Method)
   at sun.awt.windows.Win32OffScreenSurfaceData.<clinit>(Win32OffScreenSurfaceData.java:141)
   at sun.awt.Win32GraphicsDevice.<clinit>(Win32GraphicsDevice.java:58)
   at sun.awt.Win32GraphicsEnvironment.makeScreenDevice(Win32GraphicsEnvironment.java:168)
   at sun.java2d.SunGraphicsEnvironment.getScreenDevices(SunGraphicsEnvironment.java:240)
   at sun.awt.Win32GraphicsEnvironment.getDefaultScreenDevice(Win32GraphicsEnvironment.java:61)
   at java.awt.Window.init(Window.java:224)
   at java.awt.Window.<init>(Window.java:268)
   at java.awt.Frame.<init>(Frame.java:398)
   at javax.swing.JFrame.<init>(JFrame.java:198)
   at org.jfree.chart.demo.JFreeChartDemo.<init>(JFreeChartDemo.java:148)
   at org.jfree.chart.demo.JFreeChartDemo.main(JFreeChartDemo.java:285)
  Exception in thread "main"
  
  q个错误是由于新版的Swing大量的用了微Y的DirectDraw的技术来提高d的性能Q而可能你的显卡在q时候会跟你闹点情A或者显卡本wƈ不支持这L一个技术。难道就没有办法了嘛Q要解决q个问题也非常简单,我们可以屏蔽掉DirectDrawQ不让Swing使用该技术就可以了。在q行q些代码时给虚拟机指定参?Dsun.java2d.noddraw卛_?
  
  q时可能你又该纳闷了Q不说是ZWeb的图表嘛Q怎么又扯到Swing上了Q这是因Zؓ了开发者容易上手,无需配置Mq行环境Q所以这些例子都是基于GUI方式的用于展现给开发者如果生成一个图表,我们要学习的也就是如何利用这个引擎生成图表而不是怎么来显CZ个图表。当我们把生成的图表对象ExportC个图像文件即可在Web上发布?
  
  下面我们来介lJFreeChart中几个核心的对象c:
  <table boder=0>
  <tr><td>cd</td><td>cȝ作用以及单描q?lt;/td></tr>
  <tr><td>JFreeChart</td><td>图表对象QQ何类型的图表的最l表现Ş式都是在该对象进行一些属性的定制。JFreeChart引擎本n提供了一个工厂类用于创徏不同cd的图表对?lt;/td></tr>
  <tr><td>XXXXXDataset</td><td>数据集对象,用于提供昄图表所用的数据。根据不同类型的图表对应着很多cd的数据集对象c?lt;/td></tr>
  <tr><td>XXXXXPlot</td><td> 图表区域对象Q基本上q个对象军_着什么样式的图表Q创对象的时候需要Axis、Renderer以及数据集对象的支持</td></tr>
  <tr><td>XXXXXAxis</td><td> 用于处理图表的两个uQ纵轴和横u</td></tr>
  <tr><td>XXXXXRenderer</td><td>负责如何昄一个图表对?lt;/td></tr>
  <tr><td>XXXXXURLGenerator</td><td> 用于生成Web图表中每个项目的鼠标点击链接</td></tr>
  <tr><td>XXXXXToolTipGenerator</td><td> 用于生成图象的帮助提C,不同cd图表对应不同cd的工hC类</td></tr>
  </table>
  
  基本上我认ؓJFreeChart目本n的类l构的设计ƈ不是很好Q首先在创徏图表的时候用C大量的工厂方法,q样做虽然可以简化创建图表对象的代码Q但是对目本n或者开发h员来讲自行扩展一U新的图表都仍然是一件很ȝ的事情;其次除图表对象本w外其余的类q于复杂Q用者必d了解每个cd的图表对象应该对应哪些Axis、Plot、Rendererc,q且必须非常熟悉q些cȝ构造函C每个参数的具体含义。这些问题都大大困扰很多初学者。不q,虽然存在很多问题Q但是JFreeChart本n仍不׃ؓ一个非怼U的图表引擎,况且目本n也在逐渐的发展中?
  
  在非常简略的介绍了JFreeChart本n的代码结构后Q下面我们开始动手试验几个常用的图表q把他们攑ֈweb上?br />   
  三、用JFreeChart生成各种样式的图?/strong>
  限于幅的问题我们在q里只实CU常用的图表Q其他类型图表读者可以触cL通。我们先l出q囄实现Q饼囄实现再来跟柱状图q行比较?
  1 q?br />   
  [code]package lius.chart.demo;
  
  import java.io.*;
  
  import org.jfree.data.*;
  import org.jfree.chart.*;
  import org.jfree.chart.plot.*;
  /**
   * 该类用于演示最单的q囄?br />    * @author Winter Lau
   */
  public class BarChartDemo {
  
   public static void main(String[] args) throws IOException{
  
   CategoryDataset dataset = getDataSet2();
   JFreeChart chart = ChartFactory.createBarChart3D(
    "水果产量?, // 图表标题
    "水果", // 目录轴的昄标签
    "产量", // 数Du的显C标{?br />     dataset, // 数据?br />     PlotOrientation.VERTICAL, // 图表方向Q水q뀁垂?br />     true, // 是否昄图例(对于单的q囑ֿLfalse)
    false, // 是否生成工具
    false // 是否生成URL链接
    );
   
   FileOutputStream fos_jpg = null;
   try {
  fos_jpg = new FileOutputStream("D:\\fruit.jpg");
  ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
   } finally {
  try {
  fos_jpg.close();
  } catch (Exception e) {}
   }
   }
   /**
   * 获取一个演C用的简单数据集对象
   * @return
   */
   private static CategoryDataset getDataSet() {
   DefaultCategoryDataset dataset = new DefaultCategoryDataset();
   dataset.addvalue(100, null, "Ҏ");
   dataset.addvalue(200, null, "梨子");<

C物 2007-09-11 10:17 发表评论
]]>
WEB开发:使用JFreeChart生成热点图表 http://www.aygfsteel.com/libin2722/articles/144164.htmlC物C物Tue, 11 Sep 2007 02:13:00 GMThttp://www.aygfsteel.com/libin2722/articles/144164.htmlhttp://www.aygfsteel.com/libin2722/comments/144164.htmlhttp://www.aygfsteel.com/libin2722/articles/144164.html#Feedback0http://www.aygfsteel.com/libin2722/comments/commentRss/144164.htmlhttp://www.aygfsteel.com/libin2722/services/trackbacks/144164.htmlQ一Q前aQ?br />   
  JFreeChart是开放源代码站点SourceForge.net上的一个JAVA目。它的功能十分强大,能创建饼图、柱状图(普通柱状图以及堆栈q?、线图、区域图、分布图、؜合图、甘特图以及一些A表盘{等Qƈ可生成PNG或JPG囄格式文g?br />   
  本h在学习过E中发现Q网上很多文章都是讲一些JFreeChart的基本应用,而对JFreeChart生成热点图表q样常用的功能虽有所提及却没有一个完整的例子Q所以我写一个简单示例供大家参考,希望对大家的学习有所帮助?br />   
  Q二Q示例说?/strong>Q?br />   
  假设有一个关于程序员北京Q上Pq洲三地E序员学历,开发语aQ薪金情늚调查。首先要以饼图显C程序员学历的分布情?index.jsp)。点击饼囄每一部分会以q图显C层次E序员所用开发语a和薪金的情况(barview.jsp)。重ҎC怎样在饼图上d链接?br />   
  Q三Q准备工作:
  1.下蝲最新版本的JFreeChart,当前为jfreechart-1.0.0-rc1
  
  下蝲地址Qhttp://www.jfree.org/jfreechart/index.html
  
  2.解压文gQ将jfreechart-1.0.0-rc1/lib下的jcommon-1.0.0-rc1.jarQjfreechart-1.0.0-rc1.jar复制到WEB应用的lib目录下?br />   
  3.在web.xml文g中增加以下内容:
  
  
 

  
 

  
 

  
 

  
 

  
 

  
 

  
 

  
 

   
  


C物 2007-09-11 10:13 发表评论
]]>
վ֩ģ壺 | | | | ̨| | Ž| | ľ| е| | | Ƥɽ| ƽ̶| | ̩| ͼ| | ͼ| | ɽ| ͻȪ| ղ| | ɽ| | | º| | | | Դ| | | Ҵ| Т| ˮ| Ϫ| | ƽ| Ӱ|