??xml version="1.0" encoding="utf-8" standalone="yes"?>91福利在线视频,jizz一区二区,亚洲精品456 http://www.aygfsteel.com/libin2722/category/25734.htmlzh-cn Tue, 11 Sep 2007 04:57:24 GMT Tue, 11 Sep 2007 04:57:24 GMT 60 JFreeChart ?webwork 中的应用 http://www.aygfsteel.com/libin2722/articles/144170.htmlC物 C物 Tue, 11 Sep 2007 02:17:00 GMT http://www.aygfsteel.com/libin2722/articles/144170.html http://www.aygfsteel.com/libin2722/comments/144170.html http://www.aygfsteel.com/libin2722/articles/144170.html#Feedback 0 http://www.aygfsteel.com/libin2722/comments/commentRss/144170.html http://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
]]> 使用 JFreeChart来创建基于web的图? http://www.aygfsteel.com/libin2722/articles/144171.htmlC物 C物 Tue, 11 Sep 2007 02:17:00 GMT http://www.aygfsteel.com/libin2722/articles/144171.html http://www.aygfsteel.com/libin2722/comments/144171.html http://www.aygfsteel.com/libin2722/articles/144171.html#Feedback 0 http://www.aygfsteel.com/libin2722/comments/commentRss/144171.html http://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, "梨子");<
]]> WEB开发:使用JFreeChart生成热点图表 http://www.aygfsteel.com/libin2722/articles/144164.htmlC物 C物 Tue, 11 Sep 2007 02:13:00 GMT http://www.aygfsteel.com/libin2722/articles/144164.html http://www.aygfsteel.com/libin2722/comments/144164.html http://www.aygfsteel.com/libin2722/articles/144164.html#Feedback 0 http://www.aygfsteel.com/libin2722/comments/commentRss/144164.html http://www.aygfsteel.com/libin2722/services/trackbacks/144164.html Q一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中增加以下内容:
]]>
վ֩ģ壺
|
|
|
|
̨ |
|
Ž |
ⶫ |
ľ |
е |
|
|
Ƥɽ |
ƽ̶ |
|
̩ |
ͼ |
|
ͼ |
|
ɽ |
ͻȪ |
ղ |
|
ɽ |
|
|
º |
|
|
|
Դ |
|
|
Ҵ |
Т |
ˮ |
Ϫ |
ⶫ |
ƽ |
Ӱ |