`
javeye
  • 浏览: 331092 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2.1.6+在convention下集成JFreeChart的配置

阅读更多

最近太忙了,还是更新下吧。

struts2.1增加了插件struts2-convention-plugin来实现零配置,下面就记录下在convention下如何集成JFreeChart。

说明:如果对convention的配置没有了解,我毛遂自荐下这篇文章作为参考:

http://javeye.iteye.com/blog/358744

 

1.添加JFreeChart

maven代码:

	<dependency>
		<groupId>jfree</groupId>
		<artifactId>jfreechart</artifactId>
		<version>1.0.12</version>
	</dependency>

 

2.添加Struts对JFreeChart的插件支持

众所周知,Struts2要使用JFreeChart需要struts2-jfreechart-plugin插件。maven代码:

            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-jfreechart-plugin</artifactId>
                <version>2.1.6</version>
            </dependency>

 这里用的是2.1.6。

 

3.核心哦,集成

3.1.起冲突了

(1) 用winrar打开struts2-jfreechart-plugin-2.1.6.jar,可以看见有一个名为struts-plugin.xml的配置文件,打开该文件,可以看见如下代码:

    <package name="jfreechart-default" extends="struts-default">
    
    	<result-types>
    		<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
    			<param name="height">150</param>
    			<param name="width">200</param>
    		</result-type>
    	</result-types>
    </package>

 可以看见这段代码定义了一个名为jfreechart-default的package,它继承了struts-default。

 

(2) 再打开struts2-convention-plugin-2.1.6.jar中的struts-plugin.xml,它定义了一个名为convention-default的 package ,同样继承了struts-default.

  <package name="convention-default" extends="struts-default">
  </package>
 

我们知道,packege可以继承一个父类的package,可是这两个玩意居然继承的是同一个package:struts-default。他俩成了兄弟关系。问题来了,如果struts要利用convention来实现零配置,则在struts.xml中需要做如下配置:

    <constant name="struts.convention.default.parent.package"
        value="convention-default" />

这里,value的值可以使convention-default,也可以是convention-default的子类(暂且这么叫吧),也就是说,要想用convention插件,必须使用conve-default或者它的子类作为package,否则没门!完了,完了,要集成JFreeChart需要用到jfreechart-default这个package,他和convention-default是兄弟关系,可怎么揉到一起呢?

3.2 搞定冲突

想想思路吧,恩,仔细看看freechart-default这个package的定义:

    <package name="jfreechart-default" extends="struts-default">
    
    	<result-types>
    		<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
    			<param name="height">150</param>
    			<param name="width">200</param>
    		</result-type>
    	</result-types>
    </package>

其实它只是在package中定义了一个result-type,除此之外,并没有特别之处。我们知道,result type定义了返回的类型,这里定义了一个名为chart的result type,指定的类是org.apache.struts2.dispatcher.ChartResult,这个类的作用很简单,就是将JFreeChart对象的图片转换成OutputStream输出到界面,也即是所有的JFreeChart对象需要这个类的处理才能输出。另外还有两个参数:height,width,他们分别指定了输出图片的高度和高度。当然,你也可以自己实现org.apache.struts2.dispatcher.StrutsResultSupport来定义自己的ChartResult.

 

扯远了,来直接的,jfreechart-default不就定义了一个struts-default没有的result type吗?我把这个result type的拷贝下来,给convention-default一份就ok了。convention-default的定义已经在struts2-convention-plugin-2.1.6.jar中的struts-plugin.xml写死了,所以在struts.xml需要定义一个convention-default的子类package,在这个子类package中来增加result type:

<package name="convention-jfreechart" extends="convention-default">
    	<result-types>
    		<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
    			<param name="height">150</param>
    			<param name="width">200</param>
    		</result-type>
    	</result-types>
</package>

 

这样,convention-jfreechart这个package就同时有了convention-default和jfreechart-default的特性了。

 然后修改

    <constant name="struts.convention.default.parent.package"
        value="convention-jfreechart" />

说到这里,说到这里,很多人都明白完了,我还是继续罗嗦……

 

3.3 指定方法的返回类型

上面都说了,JFreeChart生成后,需要返回ChartResult类进行处理,以OutputStream的方式输出到界面上,所以如果某个方法的功能是生成JFreeChart的图片,则方法生成JFreeChart对象后,需要将指定该方法的返回类型为convention-jfreechart中定义的chart类型。

都知道@Result这个注释吧?那还等什么呢?

@Results( { @Result(name = "chartComplete", type="chart") })
public class JFreeChartAction extends ActionSupport {
………………
public String createpie()
{
生成JFreeChart对象
return "chartComplete";
}
………………
}
 

上面代码的意思是,对ceatepie方法,指定生成JFreeChart对象后的返回值为“chartComplete”,而Action的头部,定义了“chartComplete”的返回类型为“chart”。

 

如上面的,调用/j-free-chart!createpie.action,则返回的就是生成的图片。

 

需要说明的是,本文未对JFreeChart本身做过多的论述,要了解JFreeChart的东东,您google下,收获肯定不小哦

 

分享到:
评论

相关推荐

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第二部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第一部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成

    Struts2.1.6+Struts2.0+Hibernate3.1整合示例

    目的:给学习SSH(Struts2.1.6+Spring2.0+Hibernate3.1)整合的学生。从使用角度看,Struts2的SSH事例比Struts1.x的SSH简单。至于声明式事务部分,你可以参见另外一个资源“Spring 2.0 + Struts 1.2 + Hibernate 3.2 +...

    解决struts2.1.6+spring+hibernate 中文乱码

    通过上述的配置,我们可以有效地解决基于Struts2.1.6、Spring及Hibernate框架的Web应用中出现的中文乱码问题。这些配置不仅能够提高项目的稳定性,还能提升用户体验。在实际开发中,还需要根据具体情况调整编码方式...

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 01部分 struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分 大家只要将这两个部分的包全部下载下来,就可以搭建struts2 + spring + ...

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合完整jar包

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合的完整jar包,花了很长时间从Struts2.1.6、Hibernate3.3.1、Spring2.5.6挑出来的,在项目中已经应用,没有问题,不要嫌分高,下载了看了就知道好不好了,好的话给个好评...

    struts2.1.6 +spring2.5 +hibernate3.2整合开发的 jar包 _ 01部分

    struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 01部分 struts2.1.6 +spring2.5 +hibernate3.2 整合开发的 jar包 _ 02部分 大家只要将这两个部分的包全部下载下来,就可以搭建struts2 + spring + ...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解

    在深入探讨Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解的实现细节之前,我们先回顾一下这三个框架的基本概念及其在JavaEE企业级开发中的作用。 ### Struts2框架 Struts2是一个开源的Web应用框架,它遵循MVC...

    Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合jar包

    Struts2.1.6、Hibernate3.3.1和Spring2.5.6是Java Web开发中的三个关键框架...提供的"Struts2.1.6+Hibernate3.3.1+Spring2.5.6整合jar包"就是经过验证的无冲突版本,可以直接用于项目中,减少了配置和调试的时间成本。

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发 http://www.cnitblog.com/intrl/archive/2009/04/13/56322.aspx 这篇文章的源码由于他的上传的空间用户可能下载失败,作者相当牛而且具有奉献精神

    Struts2.1.6+Spring2.5.6+Hibernate3.3.2整合包

    综上所述,Struts2.1.6+Spring2.5.6+Hibernate3.3.2的整合提供了全面的Java Web开发解决方案,它简化了开发流程,提高了代码的可维护性和可扩展性。开发者可以通过掌握这三个框架的整合,提升自身在企业级应用开发中...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解,涉及的是JavaEE开发中常见的SSH框架(Struts2、Spring、Hibernate)的整合,尤其强调了注解在开发中的应用,旨在简化配置,提高开发效率。SSH框架的组合在...

    struts2.1.6+spring2.5=hibernate3.2整合实例

    struts2.1.6+spring2.5+hibernate3.2整合实例,绝对原创,绝对运行正常,jar文件的截图和sql都有 由于自己学习时耗了很多时间所以要分,请大家理解,有什么问题可以和我联系http://blog.163.com/lzy_eagle

    Struts2.1.6+Spring2.0+Hibernate3.1

    如果一切正常,将会看到预期的页面,表示Struts2.1.6+Spring2.0+Hibernate3.1的开发环境已经成功搭建完成。 以上就是Struts2.1.6、Spring2.0与Hibernate3.1这三个框架的整合开发环境配置过程的详细说明。通过上述...

    struts2.1.6+Spring2.0.8+Ibatis2.3.4工程

    struts2.1.6+Spring2.0.8+Ibatis2.3.4工程 开发工具:eclipse3.3+myeclipse6.5 应用技术:Struts2,Spring,Ibatis 数据库:oracle 测试JDK:JDK1.6 测试服务器:Tomcat6.0 非常完整的工程,部署到Tomcat上就可以使用...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    在本文中,我们将详细介绍如何将Struts2.1.6、Spring2.5.6以及Hibernate3.3.1进行整合,并构建一个简单的MVC应用。通过这个过程,读者将了解到这三种框架的基本配置、集成方法以及常见问题的解决办法。 #### 一、...

    struts2.1.6+spring2.0.7+hibernate3.2整合例子

    在"struts2.1.6+spring2.0.7+hibernate3.2整合例子"中,开发者将这三个框架集成在一个项目中,以便充分利用它们的功能。Struts2作为前端控制器,负责接收用户的请求并分发到相应的业务逻辑层。Spring作为核心容器,...

    struts2.1.6+spring2.5+hibernate3.3最新配置更新

    Struts2.1.6、Spring2.5和Hibernate3.3是三个经典的Java开源框架,它们在2009年左右是企业级Java应用开发的主流选择。这个配置组合通常被称为SSH(Struts2、Spring、Hibernate)三位一体,用于构建高效、灵活且可...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在struts2中spring的插件上了,没有从MyEclipse...

Global site tag (gtag.js) - Google Analytics