stream - image

Status
Nicht offen für weitere Antworten.

pat270881

Bekanntes Mitglied
Hallo,

ich habe jetzt die vorigen Postings plus Internetressourcen verwendet um das Anzeigen des JFreeChart Objekts über den OutputStream korrekt zu definieren. Ich habe das jetzt folgendermaßen gemacht.

In meiner jsp definiere ich das JFreeChart object in einem scriptlet und auch den content type und speicher beides im request.
Code:
JFreeChart chart = demo.createChart(dataset);
request.getSession().setAttribute("LineChart", chart);
request.getSession().setAttribute("contentType", "image/png");


Und mein Servlet sieht so aus:
Code:
public class BinaryStreamServlet extends HttpServlet {

   public void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException 
   {
      String contentType = (String)req.getSession().getAttribute("contentType");
      if (contentType == null || "".equals(contentType)) 
      {
         contentType = "image/png"; // default
      }
      res.reset();
      res.setContentType(contentType);
      OutputStream sos = res.getOutputStream();
      ByteArrayOutputStream baos = (ByteArrayOutputStream)req.getSession().getAttribute("LineChart");
      baos.writeTo(sos);

   }
}
//gemappt ist das Servlet sicher richtig, habe ich ausprobiert.

Und in der jsp habe ich dann unterhalb noch angeführt:
Code:
 [img]BinaryStreamServlet[/img]

------------------------------------------------------------------------------------------------------------------------------------------

Aber wenn ich die jsp-site ausführe und dann das BinaryStreamServlet aufgerufen wird (bei img src), geht er in die service Methode des BinaryStreamServlet aber er findet im request kein contentType Attribute sowie auch kein LineChart Attribut - bekomme immer NullPointerExceptions.

Hat jemand eine Ahnung, was hier vielleicht noch falsch läuft?? :bahnhof:


LG pat
 

Bleiglanz

Gesperrter Benutzer
wahrscheinlich rufst du das falsch auf: du musst garantieren, dass LineChart wirklich in der Session liegt...

und wozu das if? erzwing doch einfach den Content-Type, ist doch eh der einzig sinnvolle

und wozu das res.reset???
 

pat270881

Bekanntes Mitglied
Naja ich ruf es genau so auf wie ich es beschrieben habe....ja das if kann ich weglassen, bleibt aber trotzdem das gleiche problem dass er das jfreechart object nicht findet...es liegt bei mir nicht in der session sondern im request scope, da ich nicht für die ganze session das gleiche line chart haben will.

Mir ist wirklich ein Rätsel was an dem Aufruf nicht passt....?:(
 

Bleiglanz

Gesperrter Benutzer
na wenns im request scope liegt, wirst du es mit
Code:
req.getSession().getAttribute("LineChart");
kaum finden...
 

pat270881

Bekanntes Mitglied
Nein nein das passt schon so, ich habe es auch mit dem session scope ausprobiert und dann den code gepostet (hatte beim letzten posting gedacht ich hat den code gepostet wo ich es mit dem request scope versucht habe), habe es eh auch im jsp-scriplet korrekt im session scope gesetzt. aber er findet es nicht im session scope wenn ich den session scope verwende als auch nicht im request scope wenn ich das JFreeChart object im request scope setze..damit hat das nichts zu tun....

da muss irgendein anderes problem vorliegen....niemand ne ahnung?:(
 

LordSam

Mitglied
Ich würde mal prüfen ob überhaupt die session richtig funktioniert. Wenn der Browser das cookie mit der ID nicht zurück schickt wird bei jedem request eine neue session angelegt. Gib in deiner JSP Seite einfach mal die Session-ID aus und refresh die seite. Ist die ID nicht die selbe liegt daran das problem.

Einfach folgenden code einsetzen:
Code:
<%= request.getSession().getId() %>
 

pat270881

Bekanntes Mitglied
Nein das funktioniert sicher, da ich in meiner web application ein login habe und da wird ein user objekt als session objekt im session scope gesetzt und darauf kann ich immer zugreifen, also das funktioniert....

es muss irgendwas mit dem servlet zu tun haben, warum er daraus nicht auf auf den session scope oder request scope zugreifen kann...
 

pat270881

Bekanntes Mitglied
So jetzt funktionierts endlich, lag daran dass es der session scope sein muss. hatte da irgendwas nicht konsistent gehabt.

danke für eure hilfe und tipps!:)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben