Графика в java
Вопрос можно ли через сервлет передать построенный по заданными параметрами график, диаграмму?
Если да, прошу подскажите как или где прочитать про это?
Вопрос можно ли через сервлет передать построенный по заданными параметрами график, диаграмму?
Если да, прошу подскажите как или где прочитать про это?
Какой еще CLASSPATH? Куда вы его прописываете?CLASSPATH такой
В библиотеки должны быть в war-файле в /WEB-INF/lib.
CLASSPATH такой
C: \forJava\sqljdbc_2.0\enu\sqljdbc4.jar;
C: \Tomcat\lib;
C: \forJava\jfreechart-1.0.13\lib\jcommon-1.0.16.jar;
C: \forJava\jfreechart-1.0.13\lib\jfreechart-1.0.13.jar;C: \forJava\jfreechart-1.0.13\lib\
jfreechart-1.0.13 скачал с jfree.org. В lib есть еще библеотеки, но разве они нужны. Пробовал все по штучно подключить результат не меняется. Что еще может быть?
Столкнулся с проблемой. Взял простой сервлет с выводом круговой диаграммы. Код таков:
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.Color;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class diagram extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doTestPieChart(request,response);
}
protected void doTestPieChart(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
OutputStream out = response.getOutputStream();
try
{
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Graphic Novels", 192);
dataset.setValue("History", 125);
dataset.setValue("Military Fiction", 236);
dataset.setValue("Mystery", 547);
dataset.setValue("Performing Arts", 210);
dataset.setValue("Science, Non-Fiction", 70);
dataset.setValue("Science Fiction", 989);
JFreeChart chart = ChartFactory.createPieChart(
"Books by Type", // Title
dataset, // Data
true, // Yes, display the legend
false, // No, don't display tooltips
false // No, no URLs
);
chart.setBackgroundPaint(Color.white);
response.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
}
catch (Exception e)
{
System.out.println(e.toString());
}
finally
{
out.close();
}
} // End Method
}
В web.xml его прописал. компиляция проходит успешно. при загрузки странички в браузере выпадает такое
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class diagram
org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java: 102)
org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java: 298)
org.apache.coyote.http11.Http11Processor.process (Http11Processor.java: 852)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process (Http11Protocol.java: 588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run (JIoEndpoint.java: 489)
java.lang.Thread.run (Thread.java: 619)
root cause
java.lang.NoClassDefFoundError: org/jfree/data/general/PieDataset
java.lang.Class.getDeclaredConstructors0 (Native Method)
java.lang.Class.privateGetDeclaredConstructors (Class.java: 2389)
java.lang.Class.getConstructor0 (Class.java: 2699)
java.lang.Class.newInstance0 (Class.java: 326)
java.lang.Class.newInstance (Class.java: 308)
org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java: 102)
org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java: 298)
org.apache.coyote.http11.Http11Processor.process (Http11Processor.java: 852)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process (Http11Protocol.java: 588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run (JIoEndpoint.java: 489)
java.lang.Thread.run (Thread.java: 619)
root cause
java.lang.ClassNotFoundException: org.jfree.data.general.PieDataset
org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java: 1484)
org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java: 1329)
java.lang.ClassLoader.loadClassInternal (ClassLoader.java: 316)
java.lang.Class.getDeclaredConstructors0 (Native Method)
java.lang.Class.privateGetDeclaredConstructors (Class.java: 2389)
java.lang.Class.getConstructor0 (Class.java: 2699)
java.lang.Class.newInstance0 (Class.java: 326)
java.lang.Class.newInstance (Class.java: 308)
org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java: 102)
org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java: 298)
org.apache.coyote.http11.Http11Processor.process (Http11Processor.java: 852)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process (Http11Protocol.java: 588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run (JIoEndpoint.java: 489)
java.lang.Thread.run (Thread.java: 619)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.Apache Tomcat/6.0.24
.Помогите разобраться в чем ошибка?
Да вот первая ссылка из гугла — http://www.exampledepot.com/egs/javax.servlet/GetImage.html. Только вместо статической картинки генерируешь график с JFreeChart.
Я новичок в программрование на java. покажи мне пожалуйста пример кода как все это реализовать?
возвращаем ее в OutputStream response’а, предварительно установив MIME-тип на картинку, например для jpeg — «image/jpeg»
Или так. в бпзе данных есть значения. в методе doGet я жму на кнопку, а в методе doPost я беру эти значения и спомощью специальной компоненты рисую диаграмму. Что вывожу в браузер. возможно ли это реализовать через сервлеты?
11 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів