Struts2框架与JFreeChart框架相互整合的应用技术
轻量级Java Web整合开发入门——Struts2+Hibernate4+Spring3 sy

II
第 1 章 轻量级 Java Web 开发概述 ······· 1 1.1 Java 概述 ········································1 1.2 Java Web 开发概述························2 1.2.1 Java Web 项目基本结构 ············· 2 1.2.2 轻量级 Java Web 开发概述 ········ 7 1.2.3 经典 Java Web 开发概述 ············ 7 1.3 常用的 Java Web 服务器···············7 1.4 轻量级 Java Web 开发环境···········9 1.4.1 环境变量的配置·························· 9 1.4.2 常用的集成开发环境················ 10 1.5 轻量级 Java Web 开发相关 技术 ··············································11 1.5.1 JSP 简介····································· 12 1.5.2 数据库技术简介························ 13 1.5.3 配置文件的格式························ 13 1.5.4 其他相关软件···························· 15 1.6 Java Web 项目的部署··················15 1.6.1 拷贝部署法································ 15 1.6.2 WAR 包部署法 ························· 16 1.6.3 IDE 部署法 ································ 17 1.7 学习轻量级 Java Web 开发的 方法 ··············································18 1.8 本章小结 ······································18 1.9 习题 ··············································18 1.10 实验 ············································19
J2EE项目实训Struts框架技术——第10章 整合Struts和其他框架技术(第3部分)

第10章整合Struts和其他框架技术(第3/3部分)1.1整合Struts和JFreeChart框架在开发企业应用系统时,开发人员经常会遇到必须提供交互式图表的应用要求——也就是要求应用系统能够用比如饼图、柱形图或XY散点图等二维图形直观地描述和显示出数据。
但由于Web应用系统程序的用户界面不及桌面应用程序(Application)的图形用户界面(GUI)丰富和友好,这为实现Web方式下的图表技术带来了一定的复杂性。
而为了能够实现Web图表,一般可以采用下面的各种实现技术:1)使用Java Applet小程序同时利用Java本身对图形编程实现的支持来显示一个图表2)直接在Web服务器端生成好图表图片文件后,再发送到前端的浏览器中显示输出3)使用Java的图表引擎JFreeChart框架技术JFreeChart是Java平台中的一个开源图表绘制框架,可生成饼图、柱状图、散点图、时序图、甘特图等多种图表,并且可以产生PNG和JPEG等格式的图像输出文件。
基本上能够解决目前的企业应用系统中对图表方面的功能需求。
1.1.1开源JFreeChart图表框架1、开源JFreeChart图表框架1)JFreeChart图表框架技术简介JFreeChart框架是JFreeChart公司在开源网站上的一个开源项目,该公司目前的主要产品有如下的几种:1)JFreeReport:报表解决工具2)JFreeChart:Java图形解决方案(Application/Applet/Servlet/Jsp)3)JCommon:JFreeReport和JFreeChart的公共类库4)JFreeDesigner:JFreeReport的报表设计工具JFreeChart框架主要用来开发各种形式的二维图表,并且是目前比较好的Java图表解决方案、并且能够应用在J2EE Web应用环境(如Servlet、JSP和Applet)和J2SE 的Java 应用程序等环境。
Spring学习之Spring与Struts2的整合

Spring学习之Spring与Sturts2的整合●单个Struts2操作:通常web客户端访问web服务器要经过拦截器到达action,然后在action中进行一系列的操作,比如访问数据库,转发到目标页面:例如:定义一个TestAction extends ActionSourpport{}⏹需要在struts.xml文件中配置:<action name=”test” class=”TestAction的全限定名称”><result name=”success”>/test.jsp</result></action>⏹在web.xml文件中需要配置struts2的核心过滤器:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2></filter-name><url-pattern>/*</url-pattern></filter-mapping>●单个Spring操作Spring和Struts2整合操作:由Spring定义TestAction:<bean id=”test”class=”TestAction类的全限定没名称”></bean>当然,在测试的时候,在Spring容器中获取一个对象需要先获取Spirng的IOC容器,然后在容器中获取目标对象首先获取Spring的IOC容器ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext.xml”);//然后获取TestAction对象TestAction ta = (TestAction) ac.getBean(“test”);然后就可以使用这个对象了,但是,在一个web应用中,只能使用一个Spring的IOC 容器,如何才能使web的多个业务层使用同一个IOC容器呢,这就需要在web.xml文件中配置Spring的初始化IOC容器的监听器:是在整个web应用中都可以使用<listener><listener-class>org.springframework.web.context.ContextLoaderListener></listener-class> </listener><context-param><param-name>contextConfigLoaction></param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value>这里是applicationContext.xml位置</context-param>在web.xml文件中配置Spring的初始化IOC容器的监听器,就可以使整个web应用中都共享一个Spring的IOC容器,这样使用注解就可以定义一个bean,如果一个对象需要属性,就使用@Resource给对象注入属性这样,如果需要属性的时候,就可以拿来直接使用:当然也可以这样使用:配置web.xml文件:<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><!-- 配置Spring的IOC初始化容器配置IOC初始化容器就是为了是整个web应用共用一个Sprig的IOC容器,因为整个容器只能有一个,并且可以在整个web应用中使用--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param>采用注解,在applicationContext.xml文件中只要配置组件扫描在TestAction中属于控制层:使用@Controller(“prototype”)多例形式package com.workit.acton;import javax.annotation.Resource;import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import org.springframework.web.context.support.WebApplicationContextUtils;import com.opensymphony.xwork2.ActionSupport;import erService;@SuppressWarnings("serial")@Controller("testAction")@Scope("prototype")public class TestAction extends ActionSupport{@Resource //给TestAction注入userService属性private UserService userService; //前提是这个UserService类要交给Spring容器管理@Overridepublic String execute() throws Exception {System.out.println("TestAction.execute()");System.out.println("\n============================\n");System.out.println(userService);userService.printInfo();//获取ServletContextServletContext application = ServletActionContext.getServletContext();//获取Spring的ioc容器ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(application);System.out.println("在整个应用中使用Spring的IOC的容器");UserService us = (UserService) ac.getBean("userService");System.out.println(us);return "success";}}因为TestAction这个类已经交给Spring的ioc容器管理,所以在<action >中的class中不需要写类的全限定名。
Struts 2 中使用 JFreeChart 整合

Struts 2 中使用JFreeC hart 整合为了在Struts 2 中使用JFreeChart 统计图表,Struts 2 提供了JFreeChart 插件支持。
借助于JFreeChart 插件的支持,Struts 2 可以非常方便地使用JFreeChart 统计图表。
借助于JFreeChart 插件的支持,Struts 2 允许我们只需在Action 中返回一个JFreeChart 实例,而无需处理导出JFreeChart 实例,在页面显示统计图表等细节。
只要我们为Action 指定一个类型为chart 的Result,该Result 将自动生成一个JFreeChart 图表来显示Action 的处理结果。
与Struts 2 的其他插件类似,安装JFreeChart 插件非常容易,只需将Struts 2 的JFreeChart 插件复制到W eb 应用的W EB-INF/lib 路径下即可。
查看struts2-jfreechart-plugin-2.1.6.jar 文件中的struts-plugin.xml 文件时,发现该配置文件中代码如下:<?xml version="1.0" encoding="UTF-8" ?><!-- 指定Struts 2 配置文件的DTD 信息--><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//E N" "/dtds/struts-2.0.dtd"><struts><!-- 让 jfreechart-default 包是由struts-default 包扩展而来--><package name="jfreechart-default" extends="struts-default"><!-- 包里面的定义没有任何改变-->...</package></struts>此处的jfreechart-default 包已经继承了struts-default,因此让我们配置Action 所在包继承jfreechart-default 即可。
J2EE项目实训Struts框架技术——第12章 Struts2框架技术及应用(第1部分)

第12章Struts2框架技术及应用(第1/4部分)基于Struts1.X版架构的Struts框架技术可以说是目前Java开源社区中最经典的一个Web MVC框架,尽管目前已经推出了许多其它类型的Web MVC框架技术——如Spring MVC 框架、WebWork MVC框架、JSF MVC框架等,从而大大地丰富了J2EE Web应用开发技术实现,使得开发人员在应用系统的开发中有更多的技术实现选择余地。
Apache开源社区为了完善和改进原有的Struts框架技术,对基于Struts1.X版架构的Struts框架重新进行了系统设计和实现,于2007年正式推出了基于WebWork技术体系架构的Struts2.0框架。
Struts2.0框架是原有的Struts项目和Open Symphony社区WebWork2.2项目的合并版本,并集成了这两大流行的MVC框架的各自的优点,这对原有的Struts框架来说是一个质的提升。
因此,Struts2框架是WebWork框架的升级,而不应该是Struts1.X版架构的Struts 框架的升级。
虽然Struts2框架提供了与基于Struts1.X版架构的原有Struts框架的兼容,但已经不是简单地对它的升级。
因为目前的Struts2框架与原先的Struts框架有着完全不同的系统架构设计和API类库。
本章为读者介绍Struts2框架有关的技术及具体的实际应用等方面的内容——这主要包括Struts2框架系统体系架构及各种资源文件、业务控制器Action组件类及拦截器组件技术及应用,最后也还将介绍如何对Struts2框架中的Action 组件类进行单元测试。
1.1Struts2框架体系结构及各种组件1.1.1Struts2框架系统体系架构1、基于Struts1.X版架构的Struts框架优缺点回顾1)Struts框架的主要优点本书在前面的各个章节中,主要介绍了基于Struts1.X版架构的Struts框架技术,该架构体系下的Struts框架系统主要优点可以归纳如下:1)实现MVC架构模式:系统的总体结构清晰,使开发人员只需要关注应用系统本身的业务逻辑的功能实现,而不必再需要考虑系统的总体结构设计是否符合标准MVC架构模式的要求、模型层和表示层是否会产生紧密藕合等方面的问题。
struts2整合JFreechart(java私塾)

struts2整合JFreechart(java私塾)Struts2结合JFreeChart18.3.1构建结合环境有了前面的基础,接下来可以来把Struts2与JFreeChart结合使用了。
先来构建结合开发的环境,很简单,只有一步工作,把struts2-jfreechart-plugin-2.1.8.1.jar拷入到web工程的lib下就可以了。
18.3.2 Struts2结合JFreeChart来画饼图1:实现ActionJFreeChart作为一种结果类型,可以作为某个Action的Result。
接下来就来编写一个Action,结合着JFreeChart来实现画饼图。
编写这种Action和编写普通的Action大大的不同。
这种Action不需要execute方法,而是需要一个getChart方法,这个方法必须是公有的,且返回一个JFreeChart对象。
示例代码如下:java代码:查看复制到剪贴板打印1.public class PieAction extends ActionSupport {2.private static final Font font = new Font("simsun",Font.ITALIC,22);3.private static DefaultPieDataset getDataset(){4. DefaultPieDataset dataset = new DefaultPieDataset();5. dataset.setValue("本科生", 50);6. dataset.setValue("研究生", 30);7. dataset.setValue("博士", 20);8.return dataset;9. }10.public JFreeChart getChart(){11.final DefaultPieDataset dataset = getDataset();12. JFreeChart chart = ChartFactory.createPieChart("XX公司员工学历比例图",13. dataset,14.true,//是否有标题15.false,//是否有悬浮提示16.false//是否有连接17. );18.19. chart.setTitle(new TextTitle("XX公司员工学历比例图",font));20.21.//重新设置图例的字体,保证汉字的显示22. LegendTitle legend = chart.getLegend();23. legend.setItemFont(font);24.25.//重新设置统计表对象的字体,保证汉字的显示26. PiePlot plot = (PiePlot) chart.getPlot();27. plot.setBackgroundAlpha(0.9f);28. plot.setLabelFont(font);29.30.return chart;31. }32.}观察上面的两个方法getDataset和getChart,其实现方式和前面在Java中使用JFreeChart来画饼图的实现是一模一样的。
J2EE项目实训Struts框架技术——第12章 Struts2框架技术及应用(第2部分)

第12章Struts2框架技术及应用(第2/4部分)1.1.1Struts2框架各种核心配置文件1、应用Struts2框架时所涉及的各种配置文件在应用Struts2框架时,开发人员需要涉及的配置文件主要有web.xml,struts.xml,struts.properties,struts-default.xml,velocity.properties,struts-default.vm。
当然,其中web.xml和struts.xml是必须要应用的,其它的配置文件可以根据应用的需要进行选择。
这些配置文件的主要功能如下:1)web.xml:包含本应用项目中所有必须的框架组件的web部署描述符的定义和配置(请参考【例12-1】中有关FilterDispatcher组件的配置项目)。
2)struts.xml:主要涉及对result/view类型(该Action处理结果与视图资源之间的映射关系)、action映射、拦截器等与某个Action组件的实现类(代表某个特定的应用)密切相关的Struts2框架中的配置项目。
3)struts.properties:配置在应用Struts2框架时的一些全局工作参数的属性项目。
4)struts-default.xml:该文件是应该被包含在struts.xml中的系统缺省配置项目。
5)velocity.properties:对Velocity框架中所需要的配置项目进行重写的文件。
6)struts-default.vm:相对于Velocity框架中的缺省配置文件。
2、Struts2框架默认的核心系统配置项目及配置文件为了简化Struts2框架在应用开发时的各种配置工作,在struts-default.xml和struts-plugin.xml文件中为开发人员提供了许多默认的系统配置项目、并提供了相应的缺省设置值——包括结果类型(Result Types)、拦截器(Interceptors)、拦截器栈(Iinterceptor Stacks)和包(Packages)等项目,也含有Web应用系统的执行环境有关的配置信息。
Struts+Spring+Hibernate整合入门详解

3、运行eclipse,选择一个空目录作为工作区(工程结构如下:其中我们要写的Java代码在Java Resource: src(以后直接称src)下,网站根目录内容在WebContent下,类所在根目录是WEB-INF/classes,Eclipse 会自动将build/classes里面已经编译的类同步过去。
向WEB-INF下的lib目录添加如下所列的jar包。
(1)这些包在下载解压后Spring,Struts,Hibernate的lib目录或者dist/module目录下面(如果不在,可以到网上google一把。
列表中mysql-*.jar包是MySQL数据库的JDBC Driver)。
也可以把所有lib和dist 下的jar包拷贝过来(可以在系统复制这些jar包,然后到Eclipse里面选中WEB-INF里面的lib包,然后粘帖就可以了)。
但要注意全拷贝可能会存在冲突,如struts*plugin.jar等包不能引入,否则不能运行。
(2)这些Jar包是:antlr-2.7.2.jarcglib-nodep-2.1_3.jarcommons-beanutils-1.6.jarcommons-chain-1.1.jarcommons-collections-2.1.1.jarcommons-dbcp.jarcommons-digester.jarcommons-logging-1.0.4.jarcommons-logging-api-1.1.jarcommons-pool.jarcommons-validator-1.3.0.jardom4j-1.6.1.jarel-api.jarel-ri.jarfreemarker-2.3.8.jarhibernate3.jarjsf-api.jarjta.jarmysql-connector-java-3.0.14-production-bin.jarognl-2.6.11.jaroro-2.0.8.jarspring-hibernate3.jarspring.jarstruts-config.xmlstruts-core-1.3.5.jarstruts2-codebehind-plugin-2.0.9.jarstruts2-config-browser-plugin-2.0.9.jarstruts2-core-2.0.9.jarstruts2-jasperreports-plugin-2.0.9.jarstruts2-jfreechart-plugin-2.0.9.jarstruts2-jsf-plugin-2.0.9.jarstruts2-pell-multipart-plugin-2.0.9.jarstruts2-plexus-plugin-2.0.9.jarstruts2-sitegraph-plugin-2.0.9.jarstruts2-sitemesh-plugin-2.0.9.jarstruts2-spring-plugin-2.0.9.jarstruts2-struts1-plugin-2.0.9.jarstruts2-tiles-plugin-2.0.9.jartiles-api-2.0.4.jartiles-core-2.0.4.jartiles-jsp-2.0.4.jarindex.jsp的内容如表,我们暂时不分析。