cewolf 的学习,项目中用到了 cewolf+ jfreeChart于是就学习了下, cewolf 我个人认为是实现了 一个MVC设计模式 ,将显示 与控制分离 , view 在jsp中与tablib方式 将 饼图,柱图,等在前台显示出来, 控制的 model 就是数据定义的数据 类似与javabean 类
重要的就是控制方面 ,控制的类要实现 cewolf 的接口 ,我们要在实现的cewolf方法中对jfreechar 进行 二次的封装。
##############################3
首先是在官方网站下载 jar
Cewolf :
http://cewolf.sourceforge.net/new/index.html
jfreechar
http://www.jfree.org/jfreechart/
2 配置 项目中 web。Xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>CewolfServlet</servlet-name> <servlet-class>de.laures.cewolf.CewolfRenderer</servlet-class> <!-- sets storage implementation --> <init-param> <param-name>storage</param-name> <param-value> de.laures.cewolf.storage.TransientSessionStorage </param-value> </init-param> <!-- sets overlib.js location relative to webapp --> <init-param> <param-name>overliburl</param-name> <param-value>/etc/overlib.js</param-value> </init-param> <!-- turn on or off debugging logging --> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet> <!-- 注意这个是必须的,前台的方法要通过 adChart 才能调用 ,img 标签中使用它 renderer="/adChart" 才能使用 --> <servlet-mapping> <servlet-name>CewolfServlet</servlet-name> <url-pattern>/adChart/*</url-pattern> </servlet-mapping> </web-app>
3 实现的java coed
通过实现 cewolf 的接口 implements DatasetProducer, Serializable
DatasetProducer 这个接口是关键 要实现其中的 produceDataset 方法 该方法返回的
Jfreechar 的 an object of type org.jfree.data.Dataset Dateset
类型数据
package cewolf;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Map;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import de.laures.cewolf.DatasetProducer;
public class AdDateLineDataset implements DatasetProducer, Serializable {
private Number[] data;
private Date[] dateCategories;
public AdDateLineDataset() {
super();
data = new Number[] { 11, 33, 27 };
DateFormat df = DateFormat.getDateTimeInstance();
try {
dateCategories = new Date[] { df.parse("2008-03-5 08:00:00"),
df.parse("2008-03-5 10:00:00"),
df.parse("2008-03-5 15:00:00") };
} catch (ParseException e) {
e.printStackTrace();
}
}
public AdDateLineDataset(Date[] d, Number[] a) {
}
public Object produceDataset(Map params) {
TimeSeries ts1 = new TimeSeries("My Title",
org.jfree.data.time.Hour.class);
for (int i = 0; i < data.length; i++) {
ts1.add(new org.jfree.data.time.Hour(dateCategories[i]), data[i]);
}
TimeSeriesCollection collect = new TimeSeriesCollection(ts1);
return collect;
}
public String getProducerId() {
return "TimeDataProducer";
}
public boolean hasExpired(Map params, Date since) {
return true;
}
}
4 前台的jsp页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@page import="java.util.Date"%>
<!-- 将下载的tld 放在 这里 -->
<%@taglib uri="/tld/cewolf.tld" prefix="cewolf"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test</title>
</head>
<body>
<jsp:useBean id="data1" class="com.cewolfDemo.db.LineCewolf" />
<cewolf:chart id="pageChart2" title="时间序列图" type="timeseries"
xaxislabel="时间" yaxislabel="数量">
<cewolf:data>
<cewolf:producer id="data1" />
</cewolf:data>
</cewolf:chart>
<!-- 注意 renderer 参数必须与 web。xml文件中 cewolf 的 url map 相对应 -->
<cewolf:img chartid="pageChart2" renderer="/adChart" width="500"
height="500" />
</body>
</html>