JSP Applikation zum Datenaustausch

Zacherias

Mitglied
Hallo zusammen,
Ich habe eine aufgabe bekommen, die den Datenaustausch per Downloadlink ermöglichen soll. Ich hab mir hier ein paar punkte rausgeschrieben die wichtig sind. Leider habe ich keine Ahnung wie ich das umsetzen soll. Wäre nett wenn mir jemand tipps zu den einzelnen punkten geben kann

• Dieser Link darf keinerlei Informationen über die Datei enthalten.
• Dieser Link soll eine ID enthalten, welche nur für diese Datei gilt und nicht durch einfaches Ändern (Hoch bzw. Runterzählen) der ID zu einer anderen Datei führen.
• Jede Datei, welche bereitgestellt wird beinhaltet seine eigenen Logging-Informationen
o Wer/Welcher Rechner hat die Datei zur Verfügung gestellt.
o Wann wurde die Datei zur Verfügung gestellt.
o Für welchen Kunden wird die Datei zur Verfügung gestellt.
o Eventuelle Bemerkungen für die Datei sind zu speichern.
o Von welchem Rechner und wann wurde die Datei downgeloadet.
o Die Logging-Informationen für eine Datei sollen online einzeln abrufbar sein.
• Die Logging-Informationen für alle Dateien sollen auch in einer für das Programm eigenen Logdatei ausgegeben werden.
 
Ich würde einfach an den Dateinamen eine Zufallszahl anhängen und daraus einen Hashbilden (MD5 oder was auch immer). Diesen Hash würde ich dann als ID nutzen.

Dann solltest du in einer Datenbank alle Nötigen Informationen hinterlegen die für dein Berechtigungskonzept nötig sind.

Ich würde vorschlagen:
Tabelle 1 (Dateien):
- ID (der generierte Hashwert)
- Speicherort der Datei auf dem Server
- Uploaddatum
- Id des Users der die Dateihochgeladen hat
- Bemerkung
- ggf noch einen künstlichen Schlüssel.

Tabelle 2 (User).
- name
- passwort (ggf auch als hashablegen)
- ggf noch einen künstlichen Schlüssel

Tabelle 3 (Berechtigung)
- ID oder name des Users
- ID oder künstlichen Schlüssel der Datei

Tabelle 4 (Downloads)
- ID oder name des Users
- id oder schlüssel der Datei
- Downloaddatum

Damit solltest du alles abbilden können was für deine Anwendung nätig ist.
 
Du kannst die Informationen natürlich auch in Java Objekten halten.
Erstelle für jede Tabelle eine eigene Klasse.
Anstelle der Schlüssel dann natürlich direkt das Objekt und nicht den String als schlüssel halten.

Dabei hast du dann aber allerdings das Problem, dass beim Beenden der Software alle Daten verloren gehen. Wenn das verhindert werden soll, könntet du die Objekte welche dei Daten halten serialisieren und so auf der Festplatte abelegen.

Eine weitere andere Möglichkeit wäre sonst die Daten in eine CSV-Datei zu schreiben und so Filebasiert die Daten zu halten.
 
Ok danke ich werde das dann mit einer CSV datei machen.

Ich würde einfach an den Dateinamen eine Zufallszahl anhängen und daraus einen Hashbilden (MD5 oder was auch immer). Diesen Hash würde ich dann als ID nutzen.

Kansnt du mir vlt mal ein beispiel geben wie das mit dem hash funktioniert. Hab noch net so viel Ahnung^^
 
Hier mal ein kleines Beispiel:
Java:
package test;

import java.security.MessageDigest;
import java.util.Random;

/**
 * 
 * @author Kleeschulte
 * @since 01.03.2010
 */
public class Hash {
	public static void main(String[] args) {

		// Instanz der eigenen Klasse anlegen
		Hash test = new Hash();

		// Den Parameter Dateiname solltest du später dann mit dem
		// entsprechenden Namen füllen
		String dateiname = "Dateiname der Datei";

		// Die Klasse Radom liefer der die Zufallszahlen
		Random random = new Random();
		int zufallsZahl = random.nextInt(Integer.MAX_VALUE);

		// Erstellen des Hashwertes
		String hash = test.erzeugeHash(dateiname + zufallsZahl);

		// Ausgabe
		System.out.println("Dateiname: " + dateiname);
		System.out.println("Zufallszahl: " + zufallsZahl);
		System.out.println("Hash: " + hash);

	}

	/**
	 * Diese Methode generiert einen MD5-Hash des übergeben Strings
	 * @param eingabe
	 *            Original String von dem der Hashwert gebildet werden soll
	 * @return Hashwert des Übergeben Strings
	 */
	public String erzeugeHash(String eingabe) {
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.reset();
			md.update(eingabe.getBytes());
			byte[] result = md.digest();
			StringBuffer hexString = new StringBuffer();
			for (int i = 0; i < result.length; i++) {
				hexString.append(Integer.toHexString(0xFF & result[i]));
			}
			return hexString.toString();
		} catch (Exception e) {
			System.out.println("Fehler bei Hashgenerierung");
			e.printStackTrace();
		}

		return null;
	}
}
 
Zuletzt bearbeitet:
Zurück