|
| "Arbejder - vent venligst" skærm Fra : Kent Skovgaard |
Dato : 31-03-01 11:19 |
|
Jeg har lavet en servlet, der på baggrund af nogle brugerindtastede
oplysninger, sætter en analyse igang. Analysen sættes i gang ved at jeg inde
fra servletten starter et eksternt program, der foretager analysen. Imens
det eksterne program afvikles venter servletten. Når programmet er færdigt
udskriver servletten resultatet til brugerens browser. Servletten og det
eksterne program kommunikerer gennem simple tekstfiler. Jeg anvender kun én
servlet.
Da det kan tage noget tid for det eksterne program at foretage analysen,
kunne jeg godt tænke mig at servletten skrev til brugerens skærm noget i
stil med "Arbejder - vent venligst". Når analysen er færdig, skal det
resultat skærmbilledet vises automatisk. Jeg er i tvivl om, hvardan jeg skal
gribe det an. Jeg har forsøgt, men det er som om servletten ikke kan skrive
til browseren over 2 omgange.
Håber nogen kan give mig et praj. På forhånd tak.
Mvh
Kent Skovgaard
| |
Kasper Nielsen (31-03-2001)
| Kommentar Fra : Kasper Nielsen |
Dato : 31-03-01 11:38 |
|
"Kent Skovgaard" <kesedu@mail1.stofanet.dk> wrote in message
news:V8ix6.359$ph5.30415@news101.telia.com...
> Jeg har lavet en servlet, der på baggrund af nogle brugerindtastede
> oplysninger, sætter en analyse igang. Analysen sættes i gang ved at jeg
inde
> fra servletten starter et eksternt program, der foretager analysen. Imens
> det eksterne program afvikles venter servletten. Når programmet er færdigt
> udskriver servletten resultatet til brugerens browser. Servletten og det
> eksterne program kommunikerer gennem simple tekstfiler. Jeg anvender kun
én
> servlet.
>
> Da det kan tage noget tid for det eksterne program at foretage analysen,
> kunne jeg godt tænke mig at servletten skrev til brugerens skærm noget i
> stil med "Arbejder - vent venligst". Når analysen er færdig, skal det
> resultat skærmbilledet vises automatisk. Jeg er i tvivl om, hvardan jeg
skal
> gribe det an. Jeg har forsøgt, men det er som om servletten ikke kan
skrive
> til browseren over 2 omgange.
Sådan fungere HTTP protokollen ikke.
En HTTP-agent (oftest en browser) laver et request til HTTP-server som så
sender et reponse.
Så det er ikke muligt at sende f.eks. 2 responds.
En måde du kunne løse det på, var at bruge et refreshtag i din html,
den sender så et request hvert 5 sekund, hvis beregningen er færdig viser
din servlet resultat-siden, ellers sender den 'Arbejder - vent venligst'
siden tilbage igen (med et 5 sekunders refresh tag).
- Kasper
| |
Niels Ull Harremoës (31-03-2001)
| Kommentar Fra : Niels Ull Harremoës |
Dato : 31-03-01 21:47 |
|
Den endnu simplere løsning, hvis de indtastede data ikke er for komplekse og
kan kodes i en url:
Send de indtastede data til en simpel servlet eller JSP side, der bare
skriver "Arbejder - vent venligst" og så automatisk forwarder brugeren til
den egentlige beregnings servlet.
Hvis du er lidt fix til javascript kan du muligvis gøre det helt i
javascript og spare en tur til serveren, fx.
(ikke testet, skal rettes til)
function onSubmit() {
var theNumber = document.forms[0].numberfield.value; // numberfield er
dit felt
document.open('text/html');
document.writeln('<html><body><h1>Vent venligst - arbejder!</h1>');
document.writeln('<' +
'script>document.location=\"/computeServlet?number=' + theNumber+'";')
document.writeln('<' + '/script>');
document.writeln('</body></html>');
return false;
}
| |
|
|