<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import = "org.jfree.data.general.DefaultPieDataset"%>
<%@ page import = "org.jfree.chart.*"%>
<%@ page import = "org.jfree.chart.plot.*"%>
<%@ page import = "org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import = "org.jfree.chart.labels.StandardPieToolTipGenerator"%>
<%@ page import = "org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import = "org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import = "org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import = "java.io.*"%>
<%@ page import = "java.awt.Color"%>
<%@ page import = "org.jfree.chart.renderer.category.BarRenderer3D"%>
<%@ page import = "org.jfree.chart.axis.CategoryAxis"%>
<%@ page import = "org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%>
<%
//String time=request.getParameter("time");//得到年份
//String year[]=new String[12];//存储月份的数组。
//int sum[]=new int[12];//每月发帖数
int age[]=new int[1000];//年龄信息
String ages[]=new String[]{"21-30","31-40","41-50","20岁以下或51以上"};//年龄范围
int sum[]=new int[4];
//连接数据库
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl?user=ms&password=ms&characterEncoding=UFT-8");
Statement ps=con.createStatement();//数据库
//for(int i=0;i<year.length;i++){
//year[i]=(i+1)+"月";//数组内存为:1月,2月...
//String sql="select count(*) from jbbs where posttime between '"+time+"-"+(i+1)+"-1' and '"+time+"-"+(i+1)+"-31'";//sql查询count数
//ResultSet rs=ps.executeQuery(sql);//结果集
//rs.next();
//int o=rs.getInt(1);
//sum[i]=o;//放在数组中
//}
for(int i=0;i<ages.length;i++){
if(i!=ages.length){
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE between '"+21+"+"+(i*10)+"' and '"+30+"+"+(i*10)+"'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
System.out.println(sum[i]);
}else{
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE not between '21' and '51'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
}
}
}catch (Exception e2) {
out.print(e2.toString());
}
%>//在表格中输出
<table align="center" class="zw12" width="80%" border="0" width="200" cellspacing="1" cellpadding="0" >
<tr bgcolor="#0099FF" align="center"> <td>1月</td><td>2月</td><td>3月</td><td>4月</td>
<tr bgcolor="#CCCCCC" align="center">
<%
for(int j=0;j<sum.length;j++){
out.print("<td>"+sum[j]+"</td>");
}
%>
</tr></table>//在表格中输出
<!--//jfreechart-->
<%
DefaultCategoryDataset dataset =new DefaultCategoryDataset();//建立数据集for(int k=0;k<4;k++){
dataset.addValue(sum[k],ages[k],"年龄" );
}
//修改文字说明即可
JFreeChart chart = ChartFactory.createBarChart3D( "员工年龄分布" , "员工全部年龄数量统计" , "年龄值 " ,dataset,PlotOrientation.VERTICAL, true , false , false );
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setVerticalCategoryLabels( false );
plot.setDomainAxis(domainAxis);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1);
// 显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
// 设置柱的透明度
plot.setForegroundAlpha(0.8f);
StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);
PrintWriter w = new PrintWriter(out); // 输出MAP信息
String filename = ServletUtilities.saveChartAsJPEG(chart, 500 , 300 ,info,session);
ChartUtilities.writeImageMap(w, " map0 " ,info, false );
String graphURL =request.getContextPath()+"/servlet/DisplayChart?filename="+filename;
%><P ALIGN ="CENTER">
<img src="<%=graphURL%>" width =500 height =300 border =0 usemap ="#map0">
</P> 异常指针Oraclejava柱形图
<%@ page import="java.sql.*"%>
<%@ page import = "org.jfree.data.general.DefaultPieDataset"%>
<%@ page import = "org.jfree.chart.*"%>
<%@ page import = "org.jfree.chart.plot.*"%>
<%@ page import = "org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import = "org.jfree.chart.labels.StandardPieToolTipGenerator"%>
<%@ page import = "org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import = "org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import = "org.jfree.data.category.DefaultCategoryDataset"%>
<%@ page import = "java.io.*"%>
<%@ page import = "java.awt.Color"%>
<%@ page import = "org.jfree.chart.renderer.category.BarRenderer3D"%>
<%@ page import = "org.jfree.chart.axis.CategoryAxis"%>
<%@ page import = "org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%>
<%
//String time=request.getParameter("time");//得到年份
//String year[]=new String[12];//存储月份的数组。
//int sum[]=new int[12];//每月发帖数
int age[]=new int[1000];//年龄信息
String ages[]=new String[]{"21-30","31-40","41-50","20岁以下或51以上"};//年龄范围
int sum[]=new int[4];
//连接数据库
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl?user=ms&password=ms&characterEncoding=UFT-8");
Statement ps=con.createStatement();//数据库
//for(int i=0;i<year.length;i++){
//year[i]=(i+1)+"月";//数组内存为:1月,2月...
//String sql="select count(*) from jbbs where posttime between '"+time+"-"+(i+1)+"-1' and '"+time+"-"+(i+1)+"-31'";//sql查询count数
//ResultSet rs=ps.executeQuery(sql);//结果集
//rs.next();
//int o=rs.getInt(1);
//sum[i]=o;//放在数组中
//}
for(int i=0;i<ages.length;i++){
if(i!=ages.length){
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE between '"+21+"+"+(i*10)+"' and '"+30+"+"+(i*10)+"'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
System.out.println(sum[i]);
}else{
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE not between '21' and '51'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
}
}
}catch (Exception e2) {
out.print(e2.toString());
}
%>//在表格中输出
<table align="center" class="zw12" width="80%" border="0" width="200" cellspacing="1" cellpadding="0" >
<tr bgcolor="#0099FF" align="center"> <td>1月</td><td>2月</td><td>3月</td><td>4月</td>
<tr bgcolor="#CCCCCC" align="center">
<%
for(int j=0;j<sum.length;j++){
out.print("<td>"+sum[j]+"</td>");
}
%>
</tr></table>//在表格中输出
<!--//jfreechart-->
<%
DefaultCategoryDataset dataset =new DefaultCategoryDataset();//建立数据集for(int k=0;k<4;k++){
dataset.addValue(sum[k],ages[k],"年龄" );
}
//修改文字说明即可
JFreeChart chart = ChartFactory.createBarChart3D( "员工年龄分布" , "员工全部年龄数量统计" , "年龄值 " ,dataset,PlotOrientation.VERTICAL, true , false , false );
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setVerticalCategoryLabels( false );
plot.setDomainAxis(domainAxis);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1);
// 显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
// 设置柱的透明度
plot.setForegroundAlpha(0.8f);
StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);
PrintWriter w = new PrintWriter(out); // 输出MAP信息
String filename = ServletUtilities.saveChartAsJPEG(chart, 500 , 300 ,info,session);
ChartUtilities.writeImageMap(w, " map0 " ,info, false );
String graphURL =request.getContextPath()+"/servlet/DisplayChart?filename="+filename;
%><P ALIGN ="CENTER">
<img src="<%=graphURL%>" width =500 height =300 border =0 usemap ="#map0">
</P> 异常指针Oraclejava柱形图
解决方案 »
- 如何维持服务器端与客户端的连接不中断?让服务器端的变化能立刻显示到客户端而不用刷新客户端页面
- 请教各位大仙:jsp导出EXCEL时,能不能设置列宽,最好给个例子?
- 登陆验证问题?
- 从NET转道JSP
- 搜索中,搜索后的结果把输入关键字用红色标记显示一般是怎么弄的?
- 急急急,帮我看看这个错误怎么解决!!
- 请问这个函数request.getRealPath 已经被那个函数取代了?
- 请问以下问题,怎么解决?好象是环境配置问题
- 如何在JBuilder7里面单步调试WebLogic7.01的JSP?
- java交流群
- 菜鸟待拯救,后台没问题,但JSP插入时空指针错!求解答!!!
- 求各路大神相助啊!!JSP :Unable to load class for JSP
if(i!=ages.length){
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE between '"+21+"+"+(i*10)+"' and '"+30+"+"+(i*10)+"'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
System.out.println(sum[i]);
}else{
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE not between '21' and '51'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
}
}这段代码有点问题, 应该改成如下:
for(int i=0;i<ages.length;i++){
if(i!=(ages.length-1)){
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE not between '21' and '51'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
}else{
String sql="select count(*) from D_EMP_EMOLOYEE where EMP_AGE between '"+21+"+"+(i*10)+"' and '"+30+"+"+(i*10)+"'";
ResultSet rs=ps.executeQuery(sql);
rs.next();
int o=rs.getInt(1);
sum[i]=o;
System.out.println(sum[i]);
}
}
这是SQL异常, SQL语句有问题吧, debug下, 查找下是哪一行