我的目标是产生这个条形图使用JFreeChart的。
我想使用MVC数据库获得的JFreeChart数据; 豆,数据访问对象(DAO)和Servlet。 我在做的Servlet代码有问题。 下面的代码是什么我迄今。
帮助将是原汁原味的,并预先感谢您! :)
数据库
ID | 收入
R1 | 999
M3 | 832
G7 | 318
豆角,扁豆
public class Revenue
{
private String id;
private Integer revenue;
//getters and setters
}
DAO
public ArrayList<Revenue> getAllRevenueList()
{
try
{
//driver
//connection code
String sql = "SELECT id,revenue FROM revenue_table";
Statement stmt = con.createStatemtnt();
ResultSet rs = stmt.executeQuery(sql);
ArrayList<Revenue> revenueList = new ArrayList<Revenue>();
while(rs.next)
{
Revenue r = new Revenue();
r.setId(rs.getString("id"));
r.setRevenue(Integer.parseInt(rs.getString("revenue")));
revenueList.add(r); //add object to list
}
return revenueList;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
Servlet的
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("image/png");
OutputStream outputStream = response.getOutputStream();
JFreeChart chart = getRevenueChart();
int width = 1100;
int height = 350;
ChartUtilities.writeChartAsPNG(outputStream, chart, width, height);
}
public JFreeChart getRevenueChart() {
//Cannot instantiate the type CategoryDataset
CategoryDataset dataset = new CategoryDataset();
ArrayList<Bean> revenueList = DAO.getAllRevenueList();
if (revenueList != null && !revenueList.isEmpty()) {
for (Bean r : revenueList) {
dataset.setValue(r.getRevenue(), r.getID());
}
}
JFreeChart chart = ChartFactory.createBarChart3D("Graph Title",
"ID",
"Revenue",
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis axis = plot.getDomainAxis();
CategoryItemRenderer renderer = plot.getRenderer();
BarRenderer r = (BarRenderer) renderer;
r.setMaximumBarWidth(0.95);
return chart;
}