Hallo.
Ich habe ein Problem mit einer JSP-Seite. Kurz zur Programmlogik:
Hauptseite -> Unterseite 1 -> Unterseite 2
Von der Hauptseite kommt man durch einen Link auf Unterseite 1 und von dort auf Unterseite 2. U2 macht etwas und wenn das erfolgreich war, springt sie zurück auf U1 (mit jsp:forward). Allerdings bekomme ich da den Fehler „404 Seite nicht gefunden“. Wenn ich die Seite direkt aufrufe oder von der Hauptseite komme, geht es aber. Im Ausgabefenster wird nichts angezeigt (exception oder ähnliches), aber im Logfile steht das hier:
127.0.0.1 - - [21/Dec/2004:10:26:10 1000] „GET /favicon.ico HTTP/1.1“ 404 609
Da machen mich gleich 2 Sachen ratlos.
- Der angemeldet User fehlt (normalerweise sieht das so aus: 127.0.0.1 - admin [21/Dec/2004…). Anmeldung erfolgt direkt an Tomcat (BASIC).
- Ich habe in keiner meiner Seiten einen Link zu favicon.ico gesetzt. Die „Fehlermeldung“ dazu steht zwar zu jedem Seitenaufruf in den Logfiles, hat aber sonst keine Nebenwirkungen.
Was läuft hier falsch? Ich benutze jsp:forward in vielen Seiten ohne Probleme, ich glaube fast nicht, dass es daran liegt. Oder hat jsp:forward eine begrenzte Parameterzahl? Es werden insgesamt 7 Parameter weitergereicht.
*ratlos*
Bernd
Hi.
Um den 404er beim favicon.ico brauchst du dich nicht kümmern bei diesem Problem: Internet Explorer und andere Browser suchen bei jedem Request diese Icon-Datei im Root deiner Site - Diese wird dann in der Adresszeile vor deiner URL angezeigt, wenn gefunden.
…
erfolgreich war, springt sie zurück auf U1 (mit jsp:forward).
Allerdings bekomme ich da den Fehler „404 Seite nicht
gefunden“.
Bist du sicher, dass du eine relative URL angegeben hast?
z.B. /my/directory/u1.jsp
Was läuft hier falsch? Ich benutze jsp:forward in vielen
Seiten ohne Probleme, ich glaube fast nicht, dass es daran
liegt. Oder hat jsp:forward eine begrenzte Parameterzahl? Es
werden insgesamt 7 Parameter weitergereicht.
Schau mal nicht in das Access-log, sondern in das Error-Log deines J2EE-Servers. Es könnte auch sein, dass du versuchst, einen forward zu schicken, nachdem du schon Content an den Browser zurückgeschickt hast - und das funktioniert normalerweise nicht (Zumindestens nur bis der response-buffer voll ist), da das forward afaik einen object-found-somewhere-else header an den client schickt.
mfG,
J.P.Jarolim
*ratlos*
Bernd
Um den 404er beim favicon.ico brauchst du dich nicht kümmern
Weiss ich, aber das ist der einzige Log-Eintrag zu dem Zeitpunkt.
Bist du sicher, dass du eine relative URL angegeben hast?
z.B. /my/directory/u1.jsp
Ja. Da U2 noch von anderen Seiten aufgerufen wird, bekommt die Seite eine Rücksprungadresse in der Form mitgeliefert damit auch immer zum Aufrufer zurückgesprngen wird. Der Fehler tritt aber nur bei einer einzigen Seite auf.
Schau mal nicht in das Access-log, sondern in das Error-Log
deines J2EE-Servers.
S.o. da steht garnichts, nicht eine Meldung dazu…
Es könnte auch sein, dass du versuchst,
einen forward zu schicken, nachdem du schon Content an den
Browser zurückgeschickt hast - und das funktioniert
normalerweise nicht
Nein, U2 ist nur ein ausführendes Script das keine Ausgabe macht. Wenn ich schon was ausgegeben hätte, dann würde ich einen anderen Fehler bekommen (response already sent… bla irgendwas).
Sonst ne Idee?
Bernd
Problem gelöst!
Das war jetzt aber ein ganz gemeiner Fehler. 
jsp:forward arbeitet immer im Context, d.h. es wird immer der ContextPath vorne drangehängt. In request.getRequestURI() steht aber der ContextPath auch drin, also sieht das dann hinterher so aus: http://host/context/context/servlet.jsp
Diese Seite kann natürlich nicht gefunden werden. Ich verwende jetzt request.getServletPath().substring(1) (substring deshlab, da bei getServletPath() ein / vor dem Dateinamen steht, das den Context killt, wenn man es nicht entfernt), damit wird nur der Name der JSP-Seite verwendet.
Naja, wenigstens wieder etwas dazugelernt. 
Bernd