Java Klasse auf dem Webserver aus HTML-Seite heraus starten

uwe75-1

Mitglied
Hallo,

bitte nicht böse sein, wenn ich hier nicht ganz richtig sein sollte. Bin recht neu auf diesem Gebiet und weiß deshalb noch nicht so genau, wie sich das nennt, was ich suche. Aus diesem Grund fällt das Suchen auch schwer.

Ich würde mich freuen, wenn ihr mir ein paar Schlagworte sagen könntet, worunter ich dann googlen kann.

Ich habe eine fertige Java-Klasse die ein ZIP Archiv erstellt. Diese kann ich über die Java Console aus der Eingabeaufforderung heraus starten und funktioniert auch einwandfrei. Nun möchte ich dieses Programm für folgenden Zweck verwenden:

Ich habe eine Webseite mit einer Bildergalerie. Jedes einzelne Bild kann über ein HTML-Formular mit Checkbox markiert werden. Mit Hilfe eines Submit Buttons werden die Dateinamen mit Pfad der markierten Bilder in ein Array geschrieben. Diese Array-Variable soll auch beim Absenden des Formulars an meine JAVA-Klasse übergeben werden. Die Klasse macht aus der Datensammlung ein ZIP Archiv und speichert es auf dem Webserver oder wenn möglich direkt auf dem Client Rechner.

Als ersten interessiert mich - wie binde ich die JAVA Klasse auf dem Server in meine Webseite ein?

Vielen vielen Dank schon mal im Voraus

Uwe
 
Hallo Uwe,

Kommt auf die momentan auf Deinem Webserver eingesetzte Sprache drauf an: werden JSPs bzw. Servlets verwendet, kannst Du Deine Klasse einfach in eine entsprechende Seite einbauen. Läuft Deine Galerie aber unter PHP, würde ich Dir raten, auch die Komprimierung in PHP durchzuführen - bin mir sicher, da gibts unzählige Beispiele im Netz.

Das gezippte File auf dem Client-Rechner zu speichern, ist natürlich nicht so ohne Weiteres möglich. Wär ja noch schöner, wenn sämtliche Webanwendungen Zugriff auf meine Festplatte hätten :) Am besten Du erstellst das ZIP-File mittels Servlet oder PHP und stellst es dann zum Download bereit.
 
Hallo,

vielen Dank für deine Hilfe, werde mich dann mal erkundigen, was mein Webserver zu bieten hat. Ich habe bereits eine Routine für die Komprimierung mit PHP in Verwendung, aber die funktioniert nicht zuverlässig. Bei mehreren Hundert Bildern mit über 65 MB Archiv-Größe kommt es zu Speicherkapazitätsproblemen und Time-Outs - deshalb wollte ich das jetzt mal mit Java probieren, denn da soll es solche Speicherprobleme angeblich nicht geben.

Hoffe, ich kann auf Dich zählen, wenn ich wieder mal fragen haben sollte.

Viele Grüße

Uwe
 
Hallo Matdacat,

so ich habe jetzt mal Tomcat und Ecipse auf meinem rechner installiert und funktioniert auch vernünftig - habe das an einfachen Beispielen getestet.
Auch nach einigem Stöbern in den Foren, bin ich nicht wirklich weiter gekommen. kannst Du mir vielleicht Denkanstöße geben, wie ich auf der JSP / HTML-Seite den Aufruf der Webapplikation ermögliche. Den Java-Quellcode zur Erzeugung eines ZIP Archives habe ich schon gefunden und angepaßt. Die zu archivierenden Dateien werden über ein Checkbox-Formular auf einer HTML-Seite ausgewählt. Die gewählten Dateien sind in einem Array des Typs String enthalten. Dieses Array muß irgendwie an die Java-Anwendung übergebn werden und dann gestartet werden. geht das irgendwie in Richtung Beans oder das der völlig verkehrte Weg?

Danke vorab und viele Grüße
Uwe
 
Bin kein JSP-Experte, aber Du kannst darin wie gewohnt mit Java-Klassen umgehen.Weiß auch nicht, wie Deine Archivierungsklasse aussieht - die nötigen Parameter (die Bildernamen) hast Du jedenfalls. Wird wohl was Ähnliches wie folgt sein:

Code:
String[] imageNames...
YourZipper zipper = new YourZipper();
zipper.zip(imageNames, "archive.zip");
 
Hallo,

bin jetzt wieder etwas weiter gekommen und auf folgendes weiteres Problem gestoßen:
Meine Anwendung komprimiert immer nur Dateien, die sich in dem Verzeichnis userDir befinden (kann abgerufen werden mit - String userDir=System.getProperty("user.dir");

Wie kann ich nun Dateien inklusive Pfadangabe anderer Verzeichnisse der ZIP-Klasse für die Komprimierung übergeben. Meine Zip-Klasse sieht wie folgt aus:
Code:
private String destpath;
	public void setDestpath(String pfad) {
		destpath=pfad;
	}
	public void main(String args[]) {
		// TODO Auto-generated method stub
		PrintWriter stdout = new PrintWriter(System.out, true);
	      int read = 0;
	      FileInputStream in;
	      byte[] data = new byte[1024];
	      try {
	        // Zip-Archiv mit Stream verbinden
	        ZipOutputStream out =
	          new ZipOutputStream(new FileOutputStream(destpath+"demosnewroot15.zip"));
	        // Archivierungs-Modus setzen
	        out.setMethod(ZipOutputStream.DEFLATED);
	        // Hinzufügen der einzelnen Einträge
	        for (int i=0; i < args.length; i++) {
	          try {
	            stdout.println(args[i]);
	            // Eintrag für neue Datei anlegen
	            ZipEntry entry = new ZipEntry(args[i]);
	            in = new FileInputStream(args[i]);
	            // Neuer Eintrag dem Archiv hinzufügen
	            out.putNextEntry(entry);
	            // Hinzufügen der Daten zum neuen Eintrag
	            while((read = in.read(data, 0, 1024)) != -1)
	              out.write(data, 0, read);
	            out.closeEntry(); // Neuen Eintrag abschließen
	            in.close();
	          }
	          catch(Exception e) {
	            e.printStackTrace();
	          }
	        }
	        out.close();
	      }
	      catch(IOException ex) {
	        ex.printStackTrace();
	      }

	}

Vielen Dank und ein wunderschönes Weihnachtsfest

Uwe
 
Zurück