当前位置:编程学习 > JAVA >>

一个关于jfreechart的jsp条用问题

各位给我看下我的jsp中的这个错误怎么解决,我是在一个.java文件中用到jfreechart生成统计图,然后用jsp显示这个图,客jsp代码却出现这个错,由于本人不太懂java,所以把.java文件和.jsp文件代码贴上,希望高人指点一下


下面是.java文件代码:
package fangp;
import java.io.*;
import java.sql.*;
//import org.jfree.data.*;
import org.jfree.data.category.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.axis.*;
import java.awt.Font;
//import java.awt.geom.Ellipse2D.Float;
import org.jfree.chart.title.TextTitle;
import org.jfree.chart.title.LegendTitle;

public class BarChart3D
{
public static void main(String[] args) throws Exception
{
JFreeChart chart = ChartFactory.createBarChart3D(
"部门消费统计图", // 图表标题
"部门", // 目录轴的显示标签
"消费额", // 数值轴的显示标签
getDataSet(), // 数据集
//PlotOrientation.HORIZONTAL , // 图表方向:水平
PlotOrientation.VERTICAL , // 图表方向:垂直
true,  // 是否显示图例(对于简单的柱状图必须是false)
false,  // 是否生成工具
false  // 是否生成URL链接
);

//重新设置图标标题,改变字体
chart.setTitle(new TextTitle("部门消费统计图", new Font("黑体", Font.ITALIC , 22))); 
//取得统计图标的第一个图例
LegendTitle legend = chart.getLegend(0);
//修改图例的字体
legend.setItemFont(new Font("宋体", Font.BOLD, 14)); 

CategoryPlot plot = (CategoryPlot)chart.getPlot();
//取得横轴
CategoryAxis categoryAxis = plot.getDomainAxis();
//设置横轴显示标签的字体
categoryAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));
//分类标签以45度角倾斜
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 18));
//取得纵轴
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
//设置纵轴显示标签的字体
numberAxis.setLabelFont(new Font("宋体" , Font.BOLD , 22));

FileOutputStream fos = null;
fos = new FileOutputStream("tongji.jpg");
//将统计图标输出成JPG文件
ChartUtilities.writeChartAsJPEG(
fos, //输出到哪个输出流
1, //JPEG图片的质量,0~1之间
chart, //统计图标对象
800, //宽
600,//宽
null //ChartRenderingInfo 信息
);
fos.close();
}
//返回一个CategoryDataset实例

private static CategoryDataset getDataSet() throws Exception
{
Connection conn = DbConn.getConn();
Statement stmt = conn.createStatement();
String sql="select Dept_No,Dept_Name,yuefen=month(Consume_Time),zong=sum(Consume_Fund) from V_XFPsnConsume group by Dept_No,Dept_Name,month(Consume_Time) having month(Consume_Time)=6 order by Dept_No";
ResultSet rs = stmt.executeQuery(sql);

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
while(rs.next())
{
dataset.addValue(rs.getInt("zong"), rs.getString("Dept_Name"), rs.getString(""));
}
return dataset;
}

}


浏览器报错信息:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 4 in the jsp file: /BarChart3D.jsp
The method generateBarChart(HttpSession, PrintWriter) is undefined for the type BarChart3D
1: <%@ page language="java" contentType="text/html; charset=gb2312" %>
2: <%@ page import="fangp.*,java.io.*" %> 
3: <% 
4:  String filename = BarChart3D.generateBarChart(session, new PrintWriter(out));
5:  String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
6:  %>
7:  <html>


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:326)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.

Apache Tomcat/6.0.32



控制台报错信息:

2011-9-20 14:12:22 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 4 in the jsp file: /BarChart3D.jsp
The method generateBarChart(HttpSession, PrintWriter) is undefined for the type BarChart3D
1: <%@ page language="java" contentType="text/html; charset=gb2312" %>
2: <%@ page import="fangp.*,java.io.*" %> 
3: <% 
4:  String filename = BarChart3D.generateBarChart(session, new PrintWriter(out));
5:  String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
6:  %>
7:  <html>


Stacktrace:
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:595)
--------------------编程问答--------------------

BarChart3D.generateBarChart()

没看到你代码中的这个方法在哪里呢??这个方法generateBarChart是不是静态的呢,你直接在用类名调用
,还有就是jsp页面报错,你用鼠标指针指到错误上(就是那个红圈)面会显示错误信息的 --------------------编程问答-------------------- 嗯,的确是没有这个方法的,是静态动态的我也不知道,因为我不太懂这个代码的。请问要怎么定义这个方法我的图才会出来啊,我点红圈那里也是提示没有定义方法,要修改那里呢,谢谢
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,