属于工厂模式:提供ChartFactory类,由ChartFactory类创建各种图形
(1)柱状图:
代码:
public static void main(String[] args) {
//图形的数据集合
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(12, "所属单位", "北京");
dataset.addValue(6, "所属单位", "上海");
dataset.addValue(2, "所属单位", "深圳");
//工厂模式
JFreeChart chart = ChartFactory.createBarChart3D(
"用户统计报表(所属单位)", //图形的主标题
"所属单位名称", //X轴外的标签名称
"数量", //Y轴外的标签名称
dataset, //图形的数据集合
PlotOrientation.VERTICAL, //图表的显示形式(水平/垂直)
true, //是否显示子标题
true, //是否在图形上生成提示工具
true //是否点击生成URL
);
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
//处理子标题的乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
//获取图表区域对象
/**
* 图表区域对象:
* (1)使用断点:
* (2)使用System.out.println(chart.getPlot())
* (3)使用API文档
*/
CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
//获取X轴对象
CategoryAxis3D categoryAxis3D = (CategoryAxis3D)categoryPlot.getDomainAxis();
//获取Y轴对象
NumberAxis3D numberAxis3D = (NumberAxis3D) categoryPlot.getRangeAxis();
//X轴外的乱码
categoryAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
//X轴上的乱码
categoryAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
//Y轴外的乱码
numberAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
//Y轴上的乱码
numberAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
//设置Y轴上的刻度以1为单位
numberAxis3D.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(1);
numberAxis3D.setTickUnit(unit);
//获取绘图区域对象
BarRenderer3D barRenderer3D = (BarRenderer3D)categoryPlot.getRenderer();
//让图形变得苗条点
barRenderer3D.setMaximumBarWidth(0.08);
//让在图形上生成数字
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer3D.setBaseItemLabelsVisible(true);
barRenderer3D.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
//使用Frame生成图形
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();//显示图形
}
(2)线状图
代码:
public class LineDemo {
public static void main(String[] args) {
//图形的数据集合
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(12, "中国", "北京");
dataset.addValue(6, "中国", "上海");
dataset.addValue(2, "中国", "深圳");
dataset.addValue(10, "美国", "华盛顿");
dataset.addValue(5, "美国", "洛杉矶");
dataset.addValue(1, "美国", "纽约");
//工厂模式
JFreeChart chart = ChartFactory.createLineChart(
"用户统计报表(所属单位)", //图形的主标题
"所属单位名称", //X轴外的标签名称
"数量", //Y轴外的标签名称
dataset, //图形的数据集合
PlotOrientation.VERTICAL, //图表的显示形式(水平/垂直)
true, //是否显示子标题
true, //是否在图形上生成提示工具
true //是否点击生成URL
);
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
//处理子标题的乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
//获取图表区域对象
/**
* 图表区域对象:
* (1)使用断点:
* (2)使用System.out.println(chart.getPlot())
* (3)使用API文档
*/
CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
//获取X轴对象
CategoryAxis categoryAxis = (CategoryAxis)categoryPlot.getDomainAxis();
//获取Y轴对象
NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
//X轴外的乱码
categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
//X轴上的乱码
categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
//Y轴外的乱码
numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
//Y轴上的乱码
numberAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
//设置Y轴上的刻度以1为单位
numberAxis.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(1);
numberAxis.setTickUnit(unit);
//获取绘图区域对象
LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer)categoryPlot.getRenderer();
//让在图形上生成数字
lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
lineAndShapeRenderer.setBaseItemLabelsVisible(true);
lineAndShapeRenderer.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
//设置以矩形作为转折点
Shape shape = new Rectangle(10,10);
//设置图形,参数一:表示第几条线,0表示第一条,参数二:图形
lineAndShapeRenderer.setSeriesShape(0, shape);
lineAndShapeRenderer.setSeriesShapesVisible(0, true);
lineAndShapeRenderer.setSeriesShape(1, shape);
lineAndShapeRenderer.setSeriesShapesVisible(1, true);
//使用Frame生成图形
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();//显示图形
}
}
(3)饼图
代码:
public class PieDemo {
public static void main(String[] args) {
//图形的数据集合
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("北京", 12);
dataset.setValue("上海", 6);
dataset.setValue("深圳", 2);
//工厂模式
JFreeChart chart = ChartFactory.createPieChart3D(
"用户统计报表(所属单位)", //图形的主标题
dataset, //图形的数据集合
true, //是否显示子标题
true, //是否在图形上生成提示工具
true //是否点击生成URL
);
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
//处理子标题的乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
//获取图表区域对象
/**
* 图表区域对象:
* (1)使用断点:
* (2)使用System.out.println(chart.getPlot())
* (3)使用API文档
*/
PiePlot3D piePlot3D = (PiePlot3D) chart.getPlot();
piePlot3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
//在图形上显示数值:格式:北京 12 (60%)
String labelFormat = "{0} {1} ({2})";
piePlot3D.setLabelGenerator(new StandardPieSectionLabelGenerator(labelFormat));
//使用Frame生成图形
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();//显示图形
}
}
目前:jfreechart使用:
//使用Frame生成图形
ChartFrame frame = new ChartFrame("xyz",chart);
frame.setVisible(true);
frame.pack();//显示图形
此时整合项目,不使用ChartFrame
项目中使用,能否在指定盘的文件夹下生成图片,在页面中使用标签加载图片
例如:在D盘生成一张图片,在页面上使用
//在D盘生成图片
File file = new File("D:/chart.png");
try {
ChartUtilities.saveChartAsPNG(file, chart, 600, 500);
} catch (IOException e) {
e.printStackTrace();
}
整合项目的操作步骤:
第二步:导入一个jap的文件,userReport.jsp,跳转到页面后传递生成图片的文件名,用来加载图片:
"${pageContext.request.contextPath}/chart/${filename}" border="0">
第三步:
在userIndex.jsp中定义:
"font-size:12px; color:black; height=20;width=80" id="BT_Add" type="button" value="人员统计(所属单位)" name="BT_Add" οnclick="openWindow('${pageContext.request.contextPath }/system/elecUserAction_chartUser.do','700','400')">
在Action中定义:
public String chartUser(){
List
第四步:
在Dao中定义:使用聚合函数进行分组统计。
public List
第五步:封装ChartUtils的工具类,生成各种图形
public class ChartUtils {
/**生成柱状图,返回文件名(格式,日期时分秒)*/
public static String createBarChart(List list) {
//图形的数据集合
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
if(list!=null && list.size()>0){
for(Object[] o:list){
//a.keyword,a.ddlName,COUNT(a.ddlCode)
dataset.addValue(Double.parseDouble(o[2].toString()), o[0].toString(), o[1].toString());
}
}
//工厂模式
JFreeChart chart = ChartFactory.createBarChart3D(
"用户统计报表(所属单位)", //图形的主标题
"所属单位名称", //X轴外的标签名称
"数量", //Y轴外的标签名称
dataset, //图形的数据集合
PlotOrientation.VERTICAL, //图表的显示形式(水平/垂直)
true, //是否显示子标题
true, //是否在图形上生成提示工具
true //是否点击生成URL
);
//处理主标题的乱码
chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
//处理子标题的乱码
chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
//获取图表区域对象
/**
* 图表区域对象:
* (1)使用断点:
* (2)使用System.out.println(chart.getPlot())
* (3)使用API文档
*/
CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
//获取X轴对象
CategoryAxis3D categoryAxis3D = (CategoryAxis3D)categoryPlot.getDomainAxis();
//获取Y轴对象
NumberAxis3D numberAxis3D = (NumberAxis3D) categoryPlot.getRangeAxis();
//X轴外的乱码
categoryAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
//X轴上的乱码
categoryAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
//Y轴外的乱码
numberAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
//Y轴上的乱码
numberAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
//设置Y轴上的刻度以1为单位
numberAxis3D.setAutoTickUnitSelection(false);
NumberTickUnit unit = new NumberTickUnit(1);
numberAxis3D.setTickUnit(unit);
//获取绘图区域对象
BarRenderer3D barRenderer3D = (BarRenderer3D)categoryPlot.getRenderer();
//让图形变得苗条点
barRenderer3D.setMaximumBarWidth(0.08);
//让在图形上生成数字
barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
barRenderer3D.setBaseItemLabelsVisible(true);
barRenderer3D.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
//在项目中的chart的文件夹下生成图片
//获取chart的文件夹
String basePath = ServletActionContext.getServletContext().getRealPath("/chart");
//文件名(日期)
String filename = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss")+".png";
File file = new File(basePath+"/"+filename);
try {
ChartUtilities.saveChartAsPNG(file, chart, 600, 500);
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
}
整合过程,请见【技术资料\jfreechart\炫】中的《JFusionChart使用帮助手册.doc》
所有开发FCF报表,就是组织xml数据。
Xml类型格式的数据中的参数:详情请见
(以下步骤是客户方要进行的步骤!不作为开发方的研究范畴)
内部审核控制
不合格产品控制
纠正和预防措施控制
信息系统硬件集成控制
采购控制
第三方软件测试控制
(以下步骤是客户方要进行的步骤!不作为开发方的研究范畴)
需求管理过程
评审过程
项目监控过程
风险管理过程
配置管理过程
质量保证过程
度量分析过程
决策分析过程
过程改进过程
培训过程
基本信息
1:针对自己的基本情况去写
2:工作年限:可以虚拟(结合自己的年龄),上学的过程中可以参加工作了(2年以上)
自我评价
1:需求调研、需求分析、模块设计、系统设计、页面设计、模块开发的能力
2:有极强的团队合作能力和语言表达能力
教育及培训背景(请按时间倒序填写)
1:针对自己的基本情况去写
工作经历(请按时间倒序填写)
1:想好公司在哪,公司都做什么,我在公司担任的职位,都在这个公司做个什么项目,在公司工作的年限(至少1年)
项目经验(请按时间倒序填写)
1:项目功能介绍:
项目背景:
项目描述:简洁(先不要说技术,就说业务)
使用情况:
2:工作职责及技术亮点:
(1)使用了什么技术,在什么模块下,解决了什么问题(需求),增添什么样的效果?
要求:用到的技术点的相关操作要知道,比如核心对象,比如操作什么功能!
(2)开发模块包括技术设施维护管理、站点管理、图书资料信息管理、审批流转、系统管理5个功能模块
要求:不要写系统管理(放置最后写),多写项目业务的模块
(3)把学过的技术点灵活应用到每个业务模块下
1:ajax校验
jquery的ajax相关用法:项目中用到了jquery的ajax以及jquery对象的相关用法
例如:jquery对象ajax的二级联动,jquery对象ajax的数据校验,jquery对象的相关用法
2:FCK文本编辑器
项目中文本编辑器在项目中的用法
3:JBPM
jbpm4.4工作流的相关技术操作
可根据视频进行学习,参考【技术资料\JBPM\视频】中的视频教程
JBPM的资料大全,附录在【技术资料\JBPM\资料】中,可以根据资料进行项目开发和学习
如果想整合项目,大家可以按照【技术资料\JBPM\配置整合】中的《帮助.doc》进行配置
4:jfreechart
jfreechart图形报表(柱状图,饼图,线状图),学习可以参考【技术资料\jfreechart\文档】
5:js浮动框
项目中开发中,右小角的浮动框提示,参考【\技术资料\js浮动框】中的《帮助.doc》
6:jxl导入
7:lucene
全文检索功能,项目中资料图纸管理模块的开发
学习可以参考【技术资料\lucene\视频】
系统可以按照【技术资料\lucene】中的《帮助.doc》进行配置
8:maven附加
使用maven开发项目
【技术资料\maven(附加)\电力项目(整合电力项目)】中的《帮助.doc》整合整个项目的jar包(pom.xml)
【技术资料\maven(附加)\ssh(整合SSH)】中的pom.xml只整合ssh
9:md5密码加密
【技术资料\md5密码加密】存放md5密码加密的java文件
10:poi报表
存放导出/导入excel报表的技术POI
导出文件在【技术资料\poi报表\java】中的ExcelFileGenerator.java
导入文件在【技术资料\poi报表\附加:使用poi报表完成excel文件的导入】中的GenerateSqlFromExcel.java,大家可参考《帮助.doc》的配置
附加iReport技术,在【技术资料\poi报表\ireport详解】中
11:spring企业开发调度器(quartz)
【技术资料\spring企业开发调度器(quartz)】中存放的时候类似定时器的功能,可以定时或者按照周期执行某个任务,可以参考《spring企业开发调度器.ppt》进行配置,
可以查看视频和源码,位置在【技术资料\spring企业开发调度器(quartz)\视频+源码】
12:svn(附加)
svn整合项目,配置可按照【技术资料\svn(附加)】中的《svn.doc》进行配置
学习可按照《svn课堂.doc》进行学习
13:webservice远程技术
webservice可以完成2个独立的系统调用数据,我们使用的技术是axis2
国家电力系统发布数据字典,其他分公司系统调用,可以参考【技术资料\webservice远程技术\axis的jar包】中的《axis发布webservice(使用eclipse的插件生成服务端和客户端.doc》
学习可以参考视频,位置在【技术资料\webservice远程技术\视频】中
14:ztree树型菜单
配置jquery的树型菜单,使用ztree插件
15:二级缓存
配置二级缓存,即查询缓存,解决系统频繁操作数据字典表,性能优化
16:分页
项目中使用ajax完成分页,即2个Form表单的数据交互
17:过滤器(实现粗颗粒权限控制)
过滤器完成粗颗粒的权限控制,可以按照【技术资料\过滤器(实现粗颗粒权限控制)】中的《过滤器实现粗颗粒权限控制 .doc》进行配置
如果项目中使用ajax处理session失效,可以参考【技术资料\过滤器(实现粗颗粒权限控制)\附加文档(ajax处理session失效)】中的《session失效,处理ajax请求.doc》
18:简易代码生成器
项目中可以根据创建的持久化类,自动生成Dao类,Service类,Action类以及类中的响应方法
可以参考【技术资料\简易代码生成器】中的《使用说明.txt》
也可以参考【技术资料\简易代码生成器\程序代码2\test】中的《帮助.txt》
附有视频可做调试【技术资料\简易代码生成器\使用视频】
19:角色(使用hibernate映射多对多的关系)
完全使用hibernate完成系统多对多的关联维护,即用户和角色多对多,角色和权限多对多
可以参考文件《创建表+初始化数据(多对多).txt》
内有源码可以进行调试
20:进度条
项目中实现进度条
【技术资料\进度条\进度条(不添加百分比)】,即进度条没有百分比,完全使用js控制,附有视频,可以按照《帮助.doc》进行调试
【技术资料\进度条\进度条(百分比)】,即进度条添加百分比,使用ajax配合js进行控制,附有视频,可以按照《帮助.doc》进行调试
21:屏蔽火狐等浏览器,限制用户使用IE浏览器,去除修改脚本的插件浏览器(附加)
【技术资料/屏蔽火狐等浏览器,限制用户使用IE浏览器,去除修改脚本的插件浏览器(附加)】中可以按照《帮助.doc》完成屏蔽浏览器的功能,保证系统使用指定的浏览器调试
22:项目如何处理异地登录(附加)
【技术资料/项目如何处理异地登录(附加)】处理的是异地登陆的操作,即一个用户只能在1台机器操作系统,如果再其它机器登录系统,则要踢掉之前的登录,大家可以参考【技术资料\项目如何处理异地登录(附加)】中《异地登录.doc》,附有视频可做参考
23:项目在oracle数据库的框架配置(附加)
项目框架开发,使用ssh+oracle数据库进行开发,附有开发的源码
24:验证码+记住我
【技术资料\验证码+记住我】添加验证码和记住我功能,可以参考《帮助.txt》进行操作
25:运行监控中保存长字符串时截取短字符串进行保存(附加)
解决运行监控使用FCK文本编辑器之后,使用截取字符串的方式存放长文本字段
可以参考【技术资料\运行监控中保存长字符串时截取短字符串进行保存(附加)】中的《帮助.doc》进行配置
26:自定义标签+struts2标签控制访问链接权限
项目中自定义标签的时候,使用权限控制按键和链接的隐藏和显示
可以参考【技术资料\自定义标签+struts2标签控制访问链接权限】中的《自定义标签(帮助).doc》
27:自定义拦截器(实现异常处理+细颗粒权限控制)
struts2的自定义拦截器实现异常处理+日志备份,可以参考【技术资料\自定义拦截器(实现异常处理+细颗粒权限控制)\异常处理】中的《struts2的拦截器实现异常处理.doc》,附有视频大家可以查看
struts2的自定义拦截器实现细颗粒的权限控制,可以参考【技术资料\自定义拦截器(实现异常处理+细颗粒权限控制)\细颗粒度权限控制】中的《struts2的拦截器实现细颗粒度权限控制.doc》
28:技术资料\自定义类型转换
自定义类型转换,增强struts2开发的优势,使用模型驱动的对象获取页面中传递的值,该值不仅可以是String类型,同时也可以是Date类型,Integer类型,Long类型,File类型,但是日期格式如果不符合要求,需要自己处理日期转换,可以参考【技术资料\自定义类型转换】中的《帮助.doc》进行配置