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;
}
}
本文介绍了一个Servlet类,用于根据投票数据生成饼图或柱状图。通过读取投票信息并利用JFreeChart库,该Servlet可以动态创建图表,并将其输出为JPEG图像。
3974

被折叠的 条评论
为什么被折叠?



