使用数据访问对象和 Servlet 获取 JFreeChart 数据
Posted
技术标签:
【中文标题】使用数据访问对象和 Servlet 获取 JFreeChart 数据【英文标题】:Obtain JFreeChart data using Data Access Object & Servlet 【发布时间】:2014-02-18 02:04:01 【问题描述】:我的目标是使用 Java 生成 条形图,所以我搜索了一个可以做到这一点的库。很快我找到了JFreeChart库并从这里下载。
给出的教程是数据是硬编码的。所以作为我的例子。但是,我正在尝试使用 数据访问对象 (DAO) 和 Servlet 从数据库中获取 JFreeChart 数据。
This example 显示如何从数据库中获取 JFreeChart 数据。但它不使用 DAO。
有没有人可以帮助我如何使用 DAO 和 SERVLET 获取 JFreeChart 数据?
在 DAO 中,我应该创建一个返回数组列表、整数、布尔值的方法吗?
我希望我的图表看起来像这样。
我的数据库
id | revenue | year
_______________________
R1 | 999 | 2012
R1 | 832 | 2013
R2 | 318 | 2012
R2 | 111 | 2013
R3 | 342 | 2012
R3 | 873 | 2013
我的小服务程序
public JFreeChart getChart()
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.setValue(999, "2012", "R1");
dataset.setValue(832, "2013", "R1");
dataset.setValue(318, "2012", "R2");
dataset.setValue(111, "2013", "R2");
dataset.setValue(342, "2012", "R3");
dataset.setValue(873, "2013", "R3");
JFreeChart chart = ChartFactory.createBarChart3D("",
"Years", // domain axis label
"Revenue", // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
true, // include legend
true, // tooltips
false);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis axis = plot.getDomainAxis();
axis.setCategoryLabelPositions(CategoryLabelPositions
.createUpRotationLabelPositions(Math.PI / 8.0));
CategoryItemRenderer renderer = plot.getRenderer();
BarRenderer r = (BarRenderer) renderer;
r.setMaximumBarWidth(0.75);
return chart;
【问题讨论】:
对数据库使用 JDBC 还是休眠? @Aniket JDBC。我的 SQL。我应该在 DAO 中创建什么方法? 【参考方案1】:为了在servlet中进行简单的访问,创建一个类并将实例变量声明为数据库表有
public class Revenue
private String id;
private Integer revenue;
private String year;
//getters and setters
现在,从数据库中获取数据,在 DAO 中创建一个方法并写入
public ArrayList<Revenue> getAllRevenueList()
try
// try-catch exception, if any exception occurs return null
//driver
//connection code
String sql = "SELECT id,revenue,year FROM revenue_table ORDER BY year";
Statement stmt = con.createStatemtnt();
ResultSet rs = stmt.executeQuery(sql);
//now iterate over the result set and create list of objects of class `Revenue`
//create an ArrayList<Revenue>
ArrayList<Revenue> revenueList = new ArrayList<Revenue>();
while(rs.next)
//for each row in result set create the object of class Revenue
Revenue r = new Revenue();
r.setId(rs.getString("id"));
r.setRevenue(Integer.parseInt(rs.getString("revenue")));
r.setYear(rs.getString("year"));
revenueList.add(r); //add object to list
return revenueList;
catch(Exception e)
e.printStackTrace();
return null;
小服务程序
public JFreeChart getChart()
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
//retrieve the revenue ArrayList
//make sure that you have initialized the revenueDao object before calling method
ArrayList<Revenue> revenueList = revenueDao.getAllRevenueList();
//check list is not null and empty
if(revenueList != null && !revenueList.isEmpty())
for(Revenue r : revenueList)
dataset.setValue(r.getRevenue(), r.getYear, r.getId());
..........
............
..............
【讨论】:
嗨!你的回答就像一个魅力!我明白你的解释..非常感谢..! :) 您好!现在我要做this type bar chart。它与上面的条形图不同。 servlet 中的方法也不同。你能在servlet中帮助我吗?我应该为此创建一个新问题吗?提前致谢! @newbieinjavaversion2 :是的,发布新问题。告诉我问题链接。 嗨,this is the link希望你能帮助我,我是全新的。谢谢! :) @newbieinjavaversion2 :我无法理解您的问题。这很简单。没关系。如果您有任何其他疑问,请告诉我。以上是关于使用数据访问对象和 Servlet 获取 JFreeChart 数据的主要内容,如果未能解决你的问题,请参考以下文章