JSP Probleme mit Java in JSP

Dimax

Top Contributor
Guten Tag,
auf meine Jsp seite versuche ich grafische Darstellung im Form einer Tortendiagramm (die ich mit jfreechart gebastelt habe) aufzurufen.Es klappt wenn ich die Seite auf dem Tomcat.8.5 Server( integriert in Eclipse neon ) aufrufe.Wenn ich aber die Anwendung ( habe ich auch aufm Tomcat 8.5.30 deployed)über localhost/8080 aufrufe, kommt die Diagramm nicht.Die Seite wird Aufgebaut und alles läuft bis ich den Button drücke um Diagramm zu zeigen und dann passiert nichts,keine Fehlermeldung und die Seite bleibt wie es war nur die Diagramm wird nicht aufgebaut.
Die relevante Code-Ausschnitte:
Java:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="javax.swing.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<% 
String [][]topKomplex=methodeDieArrayBastellt.topTenKomplex();
String titel=new String("Top 10 Programmen nach Komplexität");
String header=new String("top Komplex");
out.print("<table align=center width=\"880px\" border=2 >");
out.print("
<tr><td colspan=\"3\"><form action=\"DieseSeite.jsp?aktion=topTenKomplex\" method=\"post\">"+
"<input type=\"submit\" value=\"Top 10 Komplexität Diagramm\"/>"
"</form></td></tr></table>");
String aktion=new String("");
 aktion=request.getParameter("aktion");
 if(aktion.equals("topTenKomplex")){
                    methodeDieDiagrammErstellt(topKomplex,titel,header);
  } 
%>
</html>
Unten das Bild mit integrierten Bibliotheken in Eclipse.
Für jeden Hinweis ,woran es liegen könnte,bin dankbar.
 

Anhänge

  • lib.png
    lib.png
    54,1 KB · Aufrufe: 94
Ich kenn mich mit JSPs nicht wirklich aus, aber müsste da nicht irgendwo ein import stehen, damit Java weiß, was methodeDieArrayBastelt und methodeDieDiagrammErstellt ist?
 
Ist da.Habe aus versehen nicht reingeschrieben .
Java:
<%@ page import="methoden.*" %>
 
Hast Du Dir schon mal das generierte HTML angesehen? Hast Du überprüft, ob methodeDieDiagrammErstellt aufgerufen wird? Hast Du Dir die Request-Parameter schon einmal ausgeben lassen?
 
Ja das alles hab ich gemacht. Die Diagramm -Button liegt unterhalb top 10 tabelle,die Tabelle wird korrekt angezeigt
In methode die mir Diagramm zeigt hab out drin..wird auch gedrückt
 

Anhänge

  • top.png
    top.png
    35,1 KB · Aufrufe: 98
Wenn die Methode aufgerufen wird, kann das Problem ja so dramatisch nicht sein. Allerdings meinte ich nicht, was im Browser angezeigt wird, sondern was im Quelltext des generierten HTML steht. Ist da irgendwas (EDIT: bzgl. des Diagramms) erkennbar? Wenn nicht: wie gibst Du das Diagramm aus?
 
Wie gesagt der Unterschied ist im Eclipse run as ->run on server | run as Java aplication -> Alles ok
deployed on server ->gleiche version Tomcat Server-Alles ok nur die JFrame kommt nicht
 
Das mag schon sein, ändert aber nichts daran, dass man keine Swing-Anwendung einfach in ein war packen kann, um diese auf dem Client auszuführen.
 
hmm..du hast mich auf ein Gedanke gebracht..köntte beim erstellen des war files das Problem liegen?
Ich importiere den Server von Eclipse auch mit..hmm
 

Anhänge

  • war.png
    war.png
    100,7 KB · Aufrufe: 84
Also swing geht nicht im Browser nur im Browser über Eclipse? Verstehe nicht was soll den nicht gehen wenns in Eclipse geht -> (Bild beigefügt) und ohne Eclipse nicht.Ich starte den Server im Eclipse(run projekt on Server)-> rufe die Anwendung über
localhost/8080/Start.jsp im Browser Alles ok. -> beende das dienst vom Eclipse Server über Dienste.Starte dort gleich den anderen Server -> localhost/8080/Start.jsp -> alles ok bis JFrame
 

Anhänge

  • topD.png
    topD.png
    108,2 KB · Aufrufe: 79
Du hast lauter lokale Swing Applikationen gestartet, die unabhängig von dem Server laufen. Server liefern "normalerweise" html Seiten zurück, keine Anwendungen.
 
Also das geht nicht? Ich will ja nicht JFrame in meine JSP integrieren ich will die JFrame nur starten,und das Startet ja,nur aber nicht immer))
 
ich will die JFrame nur starten,und das Startet ja,nur aber nicht immer))

Dein Browser schickt einen Request, dieser wird von Deinem Server (Tomcat) empfangen und verarbeitet, d. h. an das entsprechende Servlet (JSPs werden intern zu Servlets übersetzt) weitergeleitet. Das Servlet läuft auf Deinem Server, generiert eine Antwort, die zurück an den Browser geschickt wird.

Wenn Du aus der JSP-Seite heraus einen JFrame öffnest, dann passiert das im Servlet, d. h. in der VM, die auf dem Server läuft. Es gibt wohl etwas wie Webswing; kenne ich nicht. Vermutlich wird hier die Swing API für den Browser angepasst (eine Art JSF mit Swing-API).

Was Du machen müsstest, ist die Grafik in Dein HTML einzubinden. Du könntest beispielsweise in Deiner Methode JFreeChart verwenden, um ein SVG zu generieren. Dieses könntest Du dann direkt in Dein HTML reinnehmen. Alternativ wäre ein Service, der Dir die Grafik (als JPG, PNG, ...) liefert. Im HTML würdest Du dann einen img-Tag ausgeben, der als src den Service angibt. Wenn Dir Bandbreite egal ist, könntest Du theoretisch die Grafik auch als data-URI im img-Tag ausgeben.
 

Zurück
Oben