⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chartservlet.java

📁 一个很不错的在线投票系统
💻 JAVA
字号:
package cn.hxex.vote.servlet;

import java.io.IOException;
import java.util.Iterator;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

import cn.hxex.vote.dao.IVoteDAO;
import cn.hxex.vote.model.Vote;
import cn.hxex.vote.model.VoteItem;
import cn.hxex.vote.util.DAOFactory;

/**
 * 输出图形的Servlet
 * 
 * @author galaxy
 *
 */
public class ChartServlet extends HttpServlet
{
	// 请求处理方法
	public void doPost( HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException 
	{
		// 得到用户的投票信息
		String id = request.getParameter( "id" );
		IVoteDAO dao = DAOFactory.getVoteDAO();
		Vote vote = dao.getVote( id );
		
		// 得到JFreeChart对象的实例
		JFreeChart chart = getChart( vote );
		// 设置输出对象的类型
		response.setContentType( "image/jpeg" );
		// 输出图形
		ChartUtilities.writeChartAsJPEG( response.getOutputStream(),
			100, chart, 400, 300, null);
	}
	
	// 请求处理方法
	public void doGet( HttpServletRequest request, HttpServletResponse response )
			throws ServletException, IOException
	{
		doPost( request, response );
	}

	// 得到JFreeChart对象的实例
	public static JFreeChart getChart( Vote vote )
	{
		JFreeChart chart = null;
		// 判断是否为饼图
		if( vote.getPictype().indexOf( "PIE" ) == 0 )
		{
			// 组织生成饼图的数据
			DefaultPieDataset data = new DefaultPieDataset();
			
			Iterator it = vote.getVoteitems().iterator();
			while( it.hasNext() )
			{
				VoteItem vi = (VoteItem)it.next();
				data.setValue( vi.getTitle(), vi.getVotenum() );
			}
			
			// 判断是否为普通饼图
			if( "PIE".equals( vote.getPictype() ) )
			{
				chart = ChartFactory.createPieChart( vote.getTitle(),
						data, false, false, false );
			}
			else	// 3D饼图
			{
				chart = ChartFactory.createPieChart3D( vote.getTitle(),
						data, false, false, false );
			}
		}
		else
		{
			// 组织柱状图的数据
			DefaultCategoryDataset data = new DefaultCategoryDataset();
			
			Iterator it = vote.getVoteitems().iterator();
			while( it.hasNext() )
			{
				VoteItem vi = (VoteItem)it.next();
				data.addValue( vi.getVotenum(), "选项", vi.getTitle() );
			}

			// 判断是否为普通柱状图
			if( "BAR".equals( vote.getPictype() ) )
			{
				chart = ChartFactory.createBarChart( vote.getTitle(),
					"选项", "数量", data, PlotOrientation.VERTICAL,
					false, false, false );
			}
			else	// 3D柱状图
			{
				chart = ChartFactory.createBarChart3D( vote.getTitle(),
						"选项", "数量", data, PlotOrientation.VERTICAL,
						false, false, false );
			}
		}
		return chart;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -