cewolf 学习

       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 配置 项目中 webXml文件

 

<?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>

 

你可能感兴趣的:(jsp,Web,servlet,javaee,jfreechart)