Frage

Ich versuche, Diagramme dynamisch mit JFreechart als Ergebnis einiger Kontrollkästchen zu generieren, die der Benutzer auswählt, aber ich kann nicht herausfinden PNGs produzieren) und in die JSP -Ansicht. Derzeit kann ich mir nur vorstellen, die Datensätze an den JSP zu senden, kann mir aber nicht vorstellen, was von dort aus zu tun ist ... Wie mache ich es so, dass: Benutzer das Formular zum Servlet einreichen, Servlet generiert Datensätze, Diagramme aus Datensätzen, die aus Datensätzen erstellt wurden , PNGs aus Diagrammen und schließlich pngs an JSP versandt? Oder etwas in dieser Richtung.

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
                    throws IOException, ServletException{

    String[] metrics     = request.getParameterValues("metrics");
    String[] fileNames   = request.getParameterValues("files");

    List<CategoryDataset> results = new ArrayList<CategoryDataset>();
    DMCalc calculator = new DMCalc(metrics, fileNames);  
    calculator.calculateResults();
    results.add(calculator.getEditDistanceDataset());
    results.add(calculator.getSimilarityDataset());
    results.add(calculator.getTimeChartDataset());

    request.setAttribute("results", results);
    RequestDispatcher view = request.getRequestDispatcher("metricResult.jsp");

    view.forward(request, response);
}

AKTUALISIEREN:

Indem die Dopost -Methode die Datensätze aus dem Benutzerposten generiert, können sie dann in Feldern gespeichert werden. Anschließend leitet der RequestDispatcher den Benutzer an den JSP weiter, der dann die DOGT -Methode des Servlets in einem IMG -Tag aufruft, das die zuvor in der gespeicherten Datensätze verwendet Felder zur Herstellung eines PNG und das wird dann von der HTML im JSP angezeigt.

War es hilfreich?

Lösung

Lassen Sie Ihre JSP -Datei ein Tag enthalten, bei dem das SRC -Attribut der Name Ihres Servlets ist. Dann haben Sie einfach das Servlet das PNG -Diagramm zurückgeben:

    OutputStream out = response.getOutputStream();
    response.setContentType("image/png");
    ChartUtilities.writeChartAsPNG(out, chart, width, height);

JSP -Seiten sollen nur HTML oder andere Textdaten ausgeben. Obwohl du könnte Zwingen Sie den JSP, das PNG auszugeben. Es gibt keinen Nutzen, dies so zu tun.

Es hört sich so an, als ob Sie eine dynamische Seite erstellen möchten, die basierend auf einer Änderung des Dropdown-Menüstatus aktualisiert wird. Zu diesem Zweck müssen Sie JavaScript verwenden, das bei ändert, wenn sich das Menü ändert, und den Wert des SRC -Attributs des IMG -Tags aktualisiert. Dann laden der Browser das Bild mit einem neuen Diagramm neu.

Andere Tipps

Ich würde vorschlagen, dass Sie das verwenden Servletutilities Klasse. Es spart im Java -Tempdir und säubert, wenn die Sitzung ungültig ist. :) Ein weiterer Hinweis zum Anstellen der Datei besteht darin, das DisplayChart -Servlet zu verwenden, um Ihre Bilder zu erhalten. Dies gilt in web.xml

      <servlet>
    <servlet-name>DisplayChart</servlet-name>
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
  </servlet>
   <servlet-mapping>
        <servlet-name>DisplayChart</servlet-name>
        <url-pattern>/servlet/DisplayChart</url-pattern>
    </servlet-mapping>

Auf diese Weise zeigen Sie das Bild mit JSTL an:

<img src="<c:url value='/servlet/DisplayChart?'><c:param name='filename' value='${yourFileNameHERE}' /></c:url>" alt=""/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top