`
成溪先生
  • 浏览: 11390 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JSF和jfreechart整合使用

    博客分类:
  • JSF
阅读更多

闲话不多说,直接奔主题吧!1. 下载jfreechart,我用的是1.0.13版本,解压后将jfreechart-1.0.13.jar、jcommon-1.0.16.jar两个jar包加入项目的classpath,这里有个小问题,就是如果项目用使用了spring,gnujaxp.jar这个包会带来冲突,所以不需要将它也加入项目中。

2.配置。在web.xml中加上如下一段就可以了:
 

     <!-- jfreechart配置 -->
 <servlet>
  	<servlet-name>DisplayChart</servlet-name>
  	<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
 </servlet>
 <servlet-mapping>
  	<servlet-name>DisplayChart</servlet-name>
  	<url-pattern>/chartServlet/DisplayChart</url-pattern>
 </servlet-mapping>



3.在backingbean中创建画图方法drawChart(HttpSession session)

/**
	 * 画趋势图
	 * 
	 * @param session
	 * @return
	 * @author 成溪先生
	 * @throws Exception 
	 * @createTime 2010-1-4
	 */
public String drawChart(HttpSession session) throws Exception{
    //fileName用于记录生成的图片保存的路径
    String fileName ="";

    //title标题
    StringBuffer title = new StringBuffer();
    //格式
    Font titlefont = new Font("宋体",Font.BOLD,16);//标题
    Font xfont = new Font("宋体",Font.PLAIN,12) ;// X轴   
    Font yfont = new Font("宋体",Font.PLAIN,12) ;// Y轴   
    Font kfont = new Font("宋体",Font.PLAIN,12) ;// 底部  

    title.append("标题");
    //数据集
    CategoryDataset dataset = getDataSet(); 

    //创建图表
    JFreeChart chart = ChartFactory.createLineChart(title.toString(),
         "日期", // 目录轴的显示标签
         "结果", // 数值轴的显示标签
          dataset, // 数据集
	PlotOrientation.VERTICAL, // 图表方向:水平、垂直
	true, // 是否显示图例(对于简单的柱状图必须是false)
	false, // 是否生成工具
	false // 是否生成URL链接
    );
    chart.getTitle().setFont(titlefont);
    CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象   
    //x轴
    CategoryAxis domainAxis = plot.getDomainAxis();
    domainAxis.setLabelFont(xfont);
    domainAxis.setTickLabelFont(xfont);
    //调整方向
    domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

    //y轴
    ValueAxis valueAxis = plot.getRangeAxis();
    valueAxis.setLabelFont(yfont);
    valueAxis.setTickLabelFont(yfont);
    
    chart.getLegend().setItemFont(kfont);
    //让字体清晰
   chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
    LineAndShapeRenderer lineShapeRenderer = (LineAndShapeRenderer)plot.getRenderer();
    lineShapeRenderer.setBaseShapesVisible(true);
    lineShapeRenderer.setBaseLinesVisible(true);

    FileOutputStream outStream = null;

    try {
	ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
	fileName = "/chartServlet/DisplayChart?filename=";
	fileName += ServletUtilities.saveChartAsPNG(chart, 800, 350, info, session);

/*
    //ieTemp 是ie在系统中临时目录,可以将图片暂存到该目录下
	outStream = new FileOutputStream(getIeTemp());
			
	ChartUtilities.writeChartAsPNG(outStream, chart, 800, 500);
*/
    } catch (Exception e) {
	log.error(e, e);
    }finally{
        try {
	    outStream.close();
	} catch (Exception e) {
	    log.error(e, e);
	    e.printStackTrace();
	}
     }  
    this.setFileName(fileName);
    return fileName;   
}

/**
	 * 计算图表的数据集
	 * 
	 * @return
	 * @author 成溪先生
	 * @createTime 2010-1-4
*/
private CategoryDataset getDataSet(){
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
                        ...
    dataset.addValue(Number value, Comparable rowKey, Comparable columnKey);
    return dataset;
}



4. 后台已经将图生成,页面只需找到该图就可以显示了,看代码:

<h:graphicImage alt="jfreechart折线图" url="#{backingBean.fileName}"></h:graphicImage>


   

5.运行 ok! 本例只完成了带数据点折线图,其他的类似,可以推敲之。

 

1
0
分享到:
评论

相关推荐

    JSF与hibernate整合的登陆

    **JSF(JavaServer Faces)** 是Java平台上的一种用于构建用户界面的Web应用程序框架,它简化了开发人员创建和管理动态Web用户界面的过程。JSF提供了组件库、事件处理机制和生命周期管理,允许开发者通过声明式的...

    jsf+spring整合

    JSF(JavaServer Faces)和Spring是两种在Java Web开发中广泛使用的框架。JSF主要用于构建用户界面,而Spring则提供了全面的企业级应用框架服务,包括依赖注入、事务管理、安全性和AOP(面向切面编程)。将两者整合...

    jsf hibernate tiles 整合登录

    4. **整合Hibernate与JSF**:创建一个Managed Bean 来处理登录逻辑,该Bean 将使用Hibernate API 连接数据库,执行查询和更新操作。Managed Bean 可以直接在JSF 页面中使用,通过EL 表达式绑定到组件。 5. **使用...

    细说如何整合spring+hibernate +jsf

    细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,细说如何整合spring+hibernate +jsf,

    AJAX和JSF和EJB整合

    AJAX、JSF和EJB的整合主要体现在以下方面: 1. **前端交互增强**:通过AJAX,JSF的用户界面可以实现动态更新,无需每次操作都重新加载整个页面。例如,用户填写表单时,可以使用AJAX实时验证输入的有效性,而无需...

    JSF技术框架整合JSF代码

    JSF 结构JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java ...

    jsf1.2 hibernate整合小例子

    **JSF 1.2 和 Hibernate 整合详解** JavaServer Faces (JSF) 是一个用于构建用户界面的 Java 框架,而 Hibernate 是一个流行的面向对象持久化框架,用于处理 Java 应用程序与数据库之间的交互。将 JSF 1.2 与 ...

    jSF2.0与Spring整合实例+教程

    **JavaServer Faces 2.0 (JSF 2.0) 和 Spring 框架的整合教程** 在当今的企业级Web开发中,JSF 2.0 和 Spring 的结合使用非常常见,因为它们各自提供了独特的优势。JSF 是一个用于构建用户界面的组件模型框架,而 ...

    JSF+Spring+Hibernate整合图文教程详解

    通过整合JSF、Spring和Hibernate,我们不仅能够构建出一个清晰、高效的多层架构系统,还能够充分利用每个框架的优势来提高系统的性能和稳定性。在实际开发过程中,还需要注意合理地设计各个层次之间的交互逻辑,确保...

    jsf2整合richfaces4.2.3需要的jar

    在JavaServer Faces (JSF) 2.0中整合RichFaces 4.2.3框架,需要对两者的核心概念和整合过程有深入的理解。RichFaces是一个功能强大的UI组件库,它扩展了JSF的功能,提供了丰富的AJAX支持、皮肤化以及组件集。以下是...

    Jsf整合三大框架及Spring Security

    整合这些框架通常涉及配置XML文件(如web.xml、faces-config.xml、spring配置文件),设置bean的依赖关系,编写适配器类以连接各个组件,以及调整JSF页面以使用Spring Security的标签库。开发者还需要熟悉各框架的...

    JSF2整合Spring3------JSF学习笔记4

    首先,我们需要理解JSF2和Spring3整合的核心目标:将JSF的视图层与Spring的业务逻辑层结合起来。通过这种方式,我们可以利用JSF的组件化界面和事件处理,以及Spring的灵活依赖注入和事务管理。 1. **配置Spring ...

    JSF基于EJB Hibernate Spring整合开发与项目

    合理设置作用范围有助于优化内存使用和提升应用性能。 ##### 4.5 注入Managed Bean 在JSF中,可以通过依赖注入的方式将Managed Bean注入到其他Bean或组件中。这种方式简化了代码结构,提高了代码的可读性和可维护...

    ajax的框架dwr整合jsf

    3. **DWR与JSF的整合**:整合DWR和JSF,可以让JSF应用利用DWR的Ajax能力。首先,需要在JSF项目中添加DWR的依赖,包括dwr-engine.jar、dwr-server.jar等。接着,配置DWR的`dwr.xml`文件,声明要暴露给JavaScript的...

    整合Hibernate+JSF

    整合Hibernate和JSF可以提供一个完整的解决方案,从数据层到表现层都有一套统一的机制。这不仅简化了开发,还使得代码更易于理解和维护。在实际项目中,还可以结合其他技术,如CDI(Contexts and Dependency ...

    jsf-spring-hibernate整合

    此外,为了调试和测试,开发者通常会创建一些示例页面和测试用例,验证JSF、Spring和Hibernate的整合是否正确。例如,创建一个简单的CRUD(创建、读取、更新、删除)应用程序,展示如何通过JSF界面操作由Spring管理...

Global site tag (gtag.js) - Google Analytics