JSP->Servlet->Programm (Ausführung) -> Servlet ->JSP

Andron

Erfahrenes Mitglied
Hallo,
die Überschrift mag ein wenig verwirrend zu sein.
Ich erläutere das kurz.
Auf der Seite, die mit JSP generiert wurde, kann der User auf ein icon klicken. Danach werden bestimmte Informationen an ein Servlet übergeben. Servlet startet die Ausführung der Anweisung (als Thread). Der User bekommt diesselbe Seite wieder, aber die Icons sind ausgegraut (man kann nicht drauf klicken) und zwar so lange, bis der Thread mit der Ausführung fertig ist. Danach sollte die Seite bei dem User aktualisiert werden mit der Meldung "Prozess ist zu Ende" oder so und die Icons wieder anklickbar dargestellt werden.

Im Moment löse ich das Problem dadurch, dass der User auf ein Link klicken muss um zu erfahren, ob der Prozess noch läuft oder nicht. Falls der Prozess nicht mehr läuft, werden normale "anklickbare" Icons angezeigt.

Meine Frage ist, wie löse ich das Problem ?
Der Servlet soll die Jsp mit neuen aktuellen Inhalten (anklickbare Links) an den User schicken, wenn der Thread fertig ist.

Ich hoffe, ich habe mein Problem verständlich formuliert.

Danke für Ratschläge und Tipps.
 
hallo,

ich denke mal dir geht es um so eine Art Fortschrittsanzeige im Browser, oder?

Von Serverseite kannst du die Ausgabe im Browser nur auf Request-Basis ändern, d.h. immer wenn der Browser einen Request an der Server schickt bekommt der Browser die entsprechende Antwort.

Damit du eine Art Fortschrittsanzeige realisieren kannst könntest du z.B. immer dasselbe Servlet aufrufen, das, wenn dein Thread feritg ist automatisch an die Antwortseite weiterleitet. Sofern der Thread nicht fertig ist, wird dieselbe HTML-Seite mit dem Fortschrittsbalken (um die % ergänzt) zurückgegeben.

Das erneute Laden kannst du z.B. so realisieren:
HTML:
<head>
<meta http-equiv="refresh" content="5; URL=http://de.selfhtml.org/">
<!-- ... andere Angaben im Dateikopf ... -->
</head>

Damit wird alle 5 Sekunden die URL "http://de.selfhtml.org" aufgerufen. Natürlich müsste da deine URL stehen und vielleicht alle 1-2 Sekunden ein Refresh erfolgen.

Gruß
Udo
 
Ich denke zu diesem Thema solltest du dir mal die heute in großem Umfang verfügbaren AJAX Toolkits anschauen (
http://ajaxpatterns.org/Java_Ajax_Frameworks
http://www.ajax-info.de/uebersicht-ajax-frameworks/javascript-frameworks)
und diese dann für die Darstellung von Fortschritt bzw. für Manipulationen des HTML-DOM's einer Seite zu benutzen ohne diese erst neu laden zu müssen.
Genau wie Tom wuerde ich eines der vielen JavaScript Tookits nehmen. Ich habe z.B. schon mit dem Dojotoolkit (http://www.dojotoolkit.org) gearbeitet und bin begeistert, da man sich bei den Scripten nicht mehr um die verschiedenen Browser kuemmern muss. Bei Dojo sollte man am besten in die Beispiele auf der Webseite reinschauen und den Quellcode von den Beispielen als Vorlage nehmen. Weiteregehende Frage bekommt man immer relativ schnell in der sehr aktiven Mailingliste beantwortet.
Ein weiteres interessantes Projekt ist auch JMaki (https://ajax.dev.java.net/), das versucht, die Frameworks ein wenig unter einen Hut zu bekommen, allerdings habe ich damit leider noch nicht gearbeitet.
 
Zurück