📄 chartservlet.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 + -