File Donwlad über jsp

Status
Nicht offen für weitere Antworten.

amjed

Mitglied
Hallo,
in meinem Projekt habe ich eine Klasse die Daten direkt auf Clientseite in einer .txt- Datei speichern soll. Alles funktionniert ganz gut, nur wird der HTML-Code der JSP- Seite im Anschluss an die eigentlichen Daten mitgespeichert?! Hier ist der Code von der Funktion, die für die Zusendung der Datei an den Client zuständig ist:

Java:
public void downloadBackup(HttpServletRequest req, HttpServletResponse resp, String backupFile)  throws IOException
	{
		File                f        = new File(backupFile);
        int                 length   = 0;
        ServletOutputStream op       = resp.getOutputStream();
                
        //
        //  Set the response and go!
        //
        //
        resp.setContentType( "application/octet-stream" );
        resp.setContentLength( (int)f.length() );
        resp.setHeader( "Content-Disposition", "attachment; filename=\"test1.sql\"" );

        //
        //  Stream to the requester.
        //
        byte[] bbuf = new byte[255];
        DataInputStream in = new DataInputStream(new FileInputStream(f));

        while ((in != null) && ((length = in.read(bbuf)) != -1))
        {
            op.write(bbuf,0,length);
        }

        in.close();
        op.flush();
        op.close();


	}

Diese Funktion wird in einer Jsp Seite aufgerufen. Wie soll ich machen um die Zusendung des HTML-Contents im Anschluss der Text-Datei zu verhindern?

Vielen Dank!
 
So etwas sollte man von einem Servlet machen lassen, JSPs sind Template für Textdarstellung.
Der Link kann ja ruhig in einer JSP dargestellt werden, sollte aber auf ein Servlet zeigen.
 
So etwas sollte man von einem Servlet machen lassen, JSPs sind Template für Textdarstellung.
Der Link kann ja ruhig in einer JSP dargestellt werden, sollte aber auf ein Servlet zeigen.

Die Funktion wird sowieso in einem Servlet implementiert. Oder meinst du dass der Aufruf der Funktion selbst muss durch ein Servlet stattfinden?Gibt es vielleicht irgendwo im Web ein Besipiel das zeigt, wie man das mit Servlets und jsp das macht?
 
Beschreib das mal genauer, Beispiele gibt es zig-Millionen im Netz.

Normal mache ich das so:
JSP hat einen Link zum Download, dieser link zeigt auf ein Servlet
Wenn das Servlet aufgerufen wird, sendet es die Datei, danach ist Schluss.
 
Beschreib das mal genauer, Beispiele gibt es zig-Millionen im Netz.

Normal mache ich das so:
JSP hat einen Link zum Download, dieser link zeigt auf ein Servlet
Wenn das Servlet aufgerufen wird, sendet es die Datei, danach ist Schluss.

Der User soll über ein Button bestätigen, dass er eine Backup von einer Datenbank machen will; so sieht das HTML bzw jsp code aus für das formular:

HTML:
<form name="form" action="index.jsp" method="post">

<input type="hidden" name="action" value="backup"></input>

Gzip<input type="radio" name="exportType" value="gzip"></input>
Sql<input type="radio" name="exportType" value="sql" checked></input><br><br>


<button type="submit" value="backup" >Export</button>
</form>

beim Submit öffnet sich eine zweite JSP Seite, die die Daten zum Download vorbereitet und dann einen zweiten Forward durchführt:

Java:
if (action!=null && action.equals("backup"))
{
	MySQLDBManager dbManager= new MySQLDBManager();
	backupFile=dbManager.exportDB("txt");
	request.setAttribute( "forwardModule", "myModule");
	request.setAttribute( "forwardParams", "backupFile="+backupFile);
	backupFile="";
}

Die letzte JSP Seite (nach dem Forward) ruft die downloadBackup Funktion, die in einem Servlet implementiert ist und die die Zusendung der DAtei ermöglichet:

Java:
MySQLDBManager dbManager= new MySQLDBManager();
dbManager.downloadBackup(request,response,backupFile);
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben