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>