tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
4304
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von thomrohd
    thomrohd thomrohd ist offline Rookie
    Registriert seit
    Aug 2005
    Beiträge
    7
    Hallo!

    Habe folgendes Problem:

    Ich habe ein Servlet, in dem erzeuge ich einen Download, was auch wunderbar funktioniert. Nach dem Download möchte ich aber auf eine andere JSP, als die ursprüngliche verweisen. Wie kann ich das realisieren? Mit "rd.forward(request, response);" kriege ich immer eine Exception: "Cannot forward after response has been committed"

    Hier mein Servlet:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    // Download des TAN-Bogens
    String datei = "C:/Programme/Apache Software Foundation/Tomcat 5.5/webapps/Banking/TAN/";
    String dateiname = request.getSession().getAttribute("ktonr").toString() + ".pdf";
    File file = new File(datei+dateiname);
    InputStream in = new FileInputStream(file);
                                        
    response.addHeader("Content-Type", "application/pdf");
    response.addHeader("Content-Disposition", "attachment; filename="+dateiname);
    response.addHeader("Pragma", "public");
    response.addHeader("Cache-Control", "max-age=0");
                
    ServletOutputStream outs = response.getOutputStream();
                
    byte pic[]= new byte[in.available()];
    in.read( pic );
                
    outs.write( pic );          
    outs.flush();
    outs.close();
    in.close();
                
    // Nach dem Download wird die Datei gelöscht.
    file.delete();
                
    request.setAttribute("Meldung", "Jo. Fertig.");
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/gui/tan.jsp");
    rd.forward(request, response);

    Wenn ich die letzten drei Zeilen weglasse funxt alles, aber ich bleibe halt auf der ursprünglichen JSP.

    Kann mir jemand helfen? Schon einmal Danke.

    Thomas
     

  2. #2
    oko Tutorials.de Gastzugang
    Moin,

    der Kern Deines Problems sind diese Zeilen:

    ServletOutputStream outs = response.getOutputStream();
    //...
    outs.close();
    // und danach dann
    request.setAttribute("Meldung", "Jo. Fertig.");
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/gui/tan.jsp");
    rd.forward(request, response);


    Was glaubst Du, über welchen Kanal jetzt (nach outs.close()) noch eine weitere Seite an den Browser geschickt werden kann
     

  3. #3
    Avatar von thomrohd
    thomrohd thomrohd ist offline Rookie
    Registriert seit
    Aug 2005
    Beiträge
    7
    Hi oko,

    danke für die Antwort. Klingt irgendwie logisch, aber wie könnte man es denn ansonsten machen?

    Thomas
     

Ähnliche Themen

  1. Servlet 2 aus Servlet 1 aufrufen?! HttpUnit?!
    Von stockhausen im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 20.09.10, 22:03
  2. Antworten: 4
    Letzter Beitrag: 26.01.10, 15:44
  3. Servlet per Formular aufrufen
    Von WIK-Lars im Forum Java
    Antworten: 0
    Letzter Beitrag: 11.05.07, 15:14
  4. Servlet im Browser aufrufen (II)
    Von WIK-Lars im Forum Java
    Antworten: 5
    Letzter Beitrag: 18.04.07, 08:42
  5. Servlet im Browser aufrufen
    Von WIK-Lars im Forum Java
    Antworten: 7
    Letzter Beitrag: 17.04.07, 11:27