jfreechart如何在web Servlet中应用JFreeChart

jfreechart  时间:2021-06-16  阅读:()

这个效果使用jfreechart做的吗? 地图的放大,缩小,以及移动

一般web版的地图,都是使用对应GIS的前台api来实现的,所谓放大和缩小,是GIS服务器中存放的不同比例尺的地图图片拼接上去的,并不是真正将大比例尺的图放大,而是进行了图片的切换,和放大缩小无关,只是同一个地点的不同比例尺的图片而已,你可以尝试以这种思路,监听jfreechart的事件,进行底图的切换,也许可以实现类似的效果

jfreechart的利与弊

来说说 jFreechart 和 birt,openFlashChart的比较吧~ jFreechart 前端表现还可以, 但后端SQL支持较弱,不像birt可以设置存储过程,交叉表。

不支持AOP植入。

birt: 后端功能挺强大的。

可以自定义 AOP函数, 同时可以灵活调整数据源。

对于前端展现,有些麻烦。

需要自己配置CSS 加载library.但如果请美工专门做了设计,效果也能接受 。

它默认提供的报表控件(例如 饼图,仪表盘,柱图)说实话挺丑。

openFlashchart是个开源的东东。

使用json做数据传输。

但它基本和jfreechart一个意思,对后端基本没有支持。

但前端可以发布成比较炫的flash.也是个前端展现的选择。

JFreeChart的优缺点

优点:目前最好的java图表解决方案,功能强大,基本涵盖了各种图表;java实现,扩展性强,API较完善,支持多种输出方式。

缺点:类及接口较多,需花较长时间研究;如果以文件或响应流输出则缺少交互功能,为实现交互功能需借助Frame或Applet等,各有一定弊端。

总的来说,使用JFreeChart技术能够按需求定制各种图表,通过某种方式也能够实现多样的人机交互功能,JFreeChart是一个以java为基础的,值得深入研究的开源图表技术。

ireport和jfreechart有什么区别

ireport是一个报表模板工具,它是个可视化的模板编辑工具,做好的报表模板,它是结合jasperreport来使用的,通过jasperreport的类来为模板填充数据来得到我们想要的报表。

jfreechart是一个图表式的报表,像饼图,曲线图什么的。

现在ireport这个报表工具可以把jfreechart集成到报表里面。

如何在web Servlet中应用JFreeChart

import java.sql.*; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.io.FileOutputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; .jfree.chart.ChartFactory; .jfree.chart.ChartUtilities; .jfree.chart.JFreeChart; .jfree.chart.axis.CategoryAxis; .jfree.chart.axis.CategoryLabelPositions; .jfree.chart.axis.ValueAxis; .jfree.chart.plot.CategoryPlot; .jfree.chart.plot.PiePlot; .jfree.chart.plot.PlotOrientation; .jfree.chart.renderer.category.BarRenderer; .jfree.chart.title.TextTitle; .jfree.data.category.DefaultCategoryDataset; .jfree.data.general.DefaultPieDataset; .zhaoming.shopping.util.DB; public class ShowProductSalesServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; private static DefaultCategoryDataset barDataset = new DefaultCategoryDataset(); private static DefaultPieDataset pieDataset = new DefaultPieDataset(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("GBK"); resp.setCharacterEncoding("GBK"); // 创建数据 getDataSet(); // 创建 JFreeChart 对象 //直方图 JFreeChart chart = ChartFactory.createBarChart("商品销量图", "商品", "销量", barDataset, PlotOrientation.VERTICAL, true, true, false); // 配置JFreeChart对象相关信息,如:字体大小,颜色,防止乱码 ShowProductSalesServlet.configFont(chart); // 输出 //创建 Jfreechart对象 实现饼图 JFreeChart jfreechart = ChartFactory.createPieChart3D("pieChart", pieDataset, true, true, false); //为了防止出现乱码,对于字体进行设置 jfreechart.getTitle().setFont(new Font("宋体", Font.CENTER_BASELINE, 20));//设置标题字体 PiePlot piePlot= (PiePlot) jfreechart.getPlot();//获取图表区域对象 piePlot.setLabelFont(new Font("宋体",Font.BOLD,10)); jfreechart.getLegend().setItemFont(new Font("微软雅黑",Font.BOLD,10)); //得到图片 FileOutputStream fos_jpg = null; FileOutputStream fos_jpg2 = null; try { //把图片存到硬盘的相对位置 fos_jpg = new FileOutputStream( "F:\svnTest\webTest\project\Shopping2\WebRoot\images\chart\Bar.jpg"); ChartUtilities.writeChartAsJPEG(fos_jpg, 0.99f, chart, 800, 600, null); fos_jpg2 = new FileOutputStream( "F:\svnTest\webTest\project\Shopping2\WebRoot\images\chart\Pie.jpg"); // 用工具把图象写到硬盘,支持两种格式,JPG,PNG,还支持MAP ChartUtilities.writeChartAsJPEG(fos_jpg2, 0.99f, jfreechart, 600, 400, null); this.getServletContext().getRequestDispatcher( "/admin/ShowProductSalesChart.jsp").forward(req, resp); fos_jpg.close(); fos_jpg2.close(); } catch (Exception e) { e.printStackTrace(); } } //连接数据库,拿到相应的数据,设置到对象中 public static void getDataSet() { // 创建数据 // 数据初始化 Connection conn = null; ResultSet rs = null; try { conn = DB.getConn(); String sql = "select p.name ,sum(pcont) from product p join salesitem si on ( p.id = si.productid) group by p.id"; //System.out.println("sales sql" + sql); rs = DB.getRs(conn, sql); while (rs.next()) { barDataset.addValue(rs.getInt(2),"", rs.getString(1)); pieDataset.setValue(rs.getString(1), rs.getInt(2)); } } catch (Exception e) { e.printStackTrace(); } finally { DB.close(rs); DB.close(conn); } } /** * 对生成的直方图像进行设置 * @param chart */ public static void configFont(JFreeChart chart) { // 设置边框宽度 chart.setBorderStroke(new BasicStroke(1)); // 设置边框是否可见 chart.setBorderVisible(true); // 设置边框着色 chart.setBorderPaint(Color.cyan); // 设置背景颜色 // chart.setBackgroundPaint(Color.YELLOW); // 配置字体 Font xfont = new Font("宋体", Font.CENTER_BASELINE, 20);// X轴 Font yfont = new Font("宋体", Font.CENTER_BASELINE, 20);// Y轴 Font kfont = new Font("宋体", Font.CENTER_BASELINE, 18);// 底部 Font titleFont = new Font("微软雅黑", Font.CENTER_BASELINE, 25); // 图片标题 CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象 // 数据轴网格线条颜色 plot.setRangeGridlinePaint(Color.BLUE); // 数据轴网格线条笔触 plot.setRangeGridlineStroke(new BasicStroke(1.0f)); // 图片标题 chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont)); // 底部字体样式,防止乱码 chart.getLegend().setItemFont(kfont); // X轴 CategoryAxis domainAxis = plot.getDomainAxis(); // 设置X轴标题字体 domainAxis.setLabelFont(xfont); // 设置X轴字体 domainAxis.setTickLabelFont(xfont); // 设置字体颜色 domainAxis.setTickLabelPaint(Color.BLUE); // 横轴上的label斜显示 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45); // 分类轴边距,同种类型之间的距离 // 这是分类之间的距离,和BAR与BAR之间的距离有差别 // domainAxis.setCategoryMargin(0.2f); // 分类轴下(左)边距,就是离左边的距离 domainAxis.setLowerMargin(0.1); // 分类轴下(右)边距,就是离最右边的距离 domainAxis.setUpperMargin(0.1); // Y 轴 ValueAxis rangeAxis = plot.getRangeAxis(); // 设置Y轴标题字体 rangeAxis.setLabelFont(yfont); // 设置Y轴字体 rangeAxis.setTickLabelFont(yfont); // 字体颜色 rangeAxis.setLabelPaint(Color.RED); // 设置Bar的颜色 BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setSeriesPaint(0, Color.gray); renderer.setSeriesPaint(1, Color.orange); // 每个BAR之间的间隔 renderer.setItemMargin(0.0f); // 每个BAR的最大宽度 // renderer.setMaximumBarWidth(0.5f); } }

Virmach($5.23/年)年付VPS闪购

每每进入第四季度,我们就可以看到各大云服务商的促销力度是一年中最大的。一来是年底的促销节日活动比较多,二来是商家希望最后一个季度冲刺业绩。这不还没有到第四季度,我们看到有些商家已经蠢蠢欲动的开始筹备活动。比如素有低价VPS收割机之称的Virmach商家居然还没有到黑色星期五就有发布黑五促销活动。Virmach 商家有十多个数据中心,价格是便宜的,但是机器稳定性和速度肯定我们也是有数的,要不这么低的...

Hostodo:$19.99/年KVM-1GB/12GB/4TB/拉斯维加斯

Hostodo发布了几款采用NVMe磁盘的促销套餐,从512MB内存起,最低年付14.99美元,基于KVM架构,开设在拉斯维加斯机房。这是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,产品性能一般,数据中心目前在拉斯维加斯和迈阿密,支持使用PayPal或者支付宝等付款方式。下面列出几款NVMe硬盘套餐配置信息。CPU:1core内存:512MB...

香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等VPS,全球独立服务器99元起步 湘南科技

全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技郴州市湘南科技有限公司官方网址:www.xiangnankeji.cn产品内容:全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技VPS价格表:独立服...

jfreechart为你推荐
c语言论坛有什么专门交流C语言的大论坛或社区?机房360电脑上的杀毒软件被360覆盖了,怎么找回?windowsmedia电脑的大部分软件打开方式变为了Windows media center素数算法求100以内的素数的算法avc是什么格式电厂AVC啥意思?国家法规数据库哪一数据库包含中国国家标准,涉及科学研究,社会管理以及工农业生产的各个领手机软件开发工具手机app一般用什么 软件开发selectintoACCESS中提示“不允许在select into语句中使用多值字段”方正证券官方网方正证券同花顺下载/2010同花顺官方网站/同花顺官方网站首页医院排队系统医院排队机和医院排队机的区别有哪些?
256m内存 国外bt 英文简历模板word 免费名片模板 info域名 typecho 镇江联通宽带 浙江独立 免空 电子邮件服务器 中国电信测速网 hkt 鲁诺 如何安装服务器系统 双12 域名与空间 国外在线代理服务器 独立主机 工信部网站备案查询 域名和主机 更多