2016-05-20 8 views
0

Ich habe eine JSP Datei mit der nächsten Zeile:Tomcat jsp Parsing

<img src="/captcha"/> 

Und ein Servlet, die auf "/captcha" abgebildet wird. Was passiert (meiner Meinung nach): Wenn ein Benutzer die JSP-Datei anfordert, analysiert Tomcat sie in einem Thread und ruft das Servlet in einem neuen Thread auf. Ich möchte die Servlet-Anfrage zuerst ausgeführt werden, bevor Rendering Jsp-Code, der nach der <img srс="/captcha"/> ist Gibt es eine Möglichkeit, es zu tun?

Sorry für schreckliche Erklärung.

aktualisieren Dank Elliott Frisch für die Klärung, wie es funktioniert. Lass mich genauer sein. Das Servlet gibt dem Cookie einen Wert, der in der Jsp <input type="hidden" name="captcha-id" value="${cookie.captchaId.value}"> ein bisschen später angefordert wird. Ein Browser erfüllt diese Zeile, bevor das Servlet seine Ausführung beendet. Als Ergebnis sehe ich einen ungültigen Cookie-Wert. Kannst du mir sagen, wie ich damit umgehen soll?

+0

Möglicherweise gibt es eine Möglichkeit, die gewünschte Funktionalität zu erhalten. Könnten Sie die Captcha-ID in eine session-scope-Variable anstatt in einen Cookie setzen? Wenn ja, könnte die JSP möglicherweise warten, bis diese Variable gesetzt ist, bevor der letzte Abschnitt der Seite an den Client gesendet wird. Wir könnten hier Democode schreiben, wenn Sie diese Idee ausprobieren möchten. – rickz

+0

Können Sie Ihr Captcha nicht als Bild über JavaScript vorladen? http://www.thonky.com/javascript-and-css-guide/javascript-image-preload – Jaumzera

Antwort

0

Wie Elliot erklärt hat, wie der Anfragefluss funktioniert: Warum verlassen Sie sich darauf, die Captcha-Informationen in der Anfrage zu finden - z. durch ein Eingabefeld/Parameter? Wenn Sie die Anfrage einreichen, einschließlich des dekodierten Captchas, erhalten Sie den Captcha-Cookie trotzdem und können diesen Wert mit dem übergebenen manuell entschlüsselten Wert vergleichen. Problem gelöst, nicht mehr auf obskuren Anfrageauftrag angewiesen.

Dies wird nur fehlschlagen, wenn Personen mehrere Seiten mit Captchas gleichzeitig öffnen und wenn Ihr Captcha den Cookie immer überschreibt. Aber ich denke, dass dieser Anwendungsfall selten ist.

Verwandte Themen