Response.encodeURL macht Probleme

Hallo,

ich habe das Problem, dass ich meine Webapplication ohne Cookies ermöglichen will, aber nur Fehler bekomme.
Mit Cookies funktioniert es einwandfrei und ich habe in Erinnerung, dass man nur jede URL/URI in response.encodeURL(„URI“) einbetten muss, um auf Cookies verzichten zu können.

Ich arbeite mit JSPs, einem ControlServlet, über das alle Requests laufen und dann eben Beans, bzw. Hilfsklassen.

Da ich über Rekursion arbeite, sind alle meine URIs so aufgebaut: „process?action=valid“ Alles was vorne ‚process‘ hat, wird an das Servlet geleitet, welches dann den action-Parameter ausliest und darauf reagiert.

Intern funktioniert es einwandfrei, aber sobald ich eine der JSP ansteuern will, bekomme ich vom Tomcat einen 404.

Apache Tomcat/4.0.6 - HTTP Status 404 - /Login.jsp;jsessionid=8BA818BCB1B9158DDFA13CB5F02E6F85

Was ich allerdings nicht verstehe, ist, dass wenn ich das /Login… direkt in der URL einfüge, die Seite angezeigt wird.

Vielen Dank schonmal im Vorraus.

Apache Tomcat/4.0.6 - HTTP Status 404 -
/Login.jsp;jsessionid=8BA818BCB1B9158DDFA13CB5F02E6F85

/Login… direkt in der URL einfüge, die Seite angezeigt wird.

Was genau heisst /Login…? Tippst du nur /Login oder /Login.jsp?
Gibt es die Seite Login.jsp (mit grossem L) wirklich?

Gruss, Patrick

Wenn ich /Login.jsp;jsessionid=8BA818BCB1B9158DDFA13CB5F02E6F85 direkt eingebe… ich wollte nur die Schreibarbeit sparen…

Ja, es gibt die Seite Login.jsp, sonst würde er sie ja beim direkten Aufruf, bzw. MIT Cookies ja nicht finden.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

/Login.jsp;jsessionid=8BA818BCB1B9158DDFA13CB5F02E6F85 direkt
eingebe… ich wollte nur die Schreibarbeit sparen…
Ja, es gibt die Seite Login.jsp, sonst würde er sie ja beim
direkten Aufruf, bzw. MIT Cookies ja nicht finden.

Ach so, aehem, jetzt habe ich das mit dem direkt und intern kapiert.

Wie ruft dein Servlet denn die JSP auf?
Ich frage das nur, weil ich das bei mir mal nachvollziehen moechte.

Gruss, Patrick

Ach so, aehem, jetzt habe ich das mit dem direkt und intern
kapiert.

Wie ruft dein Servlet denn die JSP auf?
Ich frage das nur, weil ich das bei mir mal nachvollziehen
moechte.

Gruss, Patrick

So, das ist die interne Variante, die funktioniert:

rd = req.getRequestDispatcher(res.encodeURL(„process?action=valid“));
rd.forward(req, res);

und so sieht ein direkter JSP-Aufruf aus:

rd = req.getRequestDispatcher(res.encodeURL(„Login.jsp“));
rd.forward(req, res);

Würde bei dem Aufruf was nicht stimmen, dürfte es ja mit Cookies auch nicht funktionieren, oder? Das ist es, was mich verwirrt…

Hallo Patrick,

vielen Dank, dass du mir helfen wolltest, aber ich habe gerade eine Lösung gefunden.

die in den JSPs dürfen keinen führenden Slash haben, alle RequestDispatcher brauchen allerdings einen. ("/process?action=valid").

Ich verstehe es nicht wirklich, aber es läuft jetzt :smile:

Sofern du nicht die ROOT Webapplikation bist ist das verständlich, das erste ist reines HTML und wenn du da einen / vorne hinmachst, dann hängt der Browser das direkt nach dem Domainnamen hin. Bei Java Servlet Methoden wird glaube ich der Context immer berücksichtigt, also / ist nicht auf root-ebene vom server sondern von deiner Web-Applikation.

Grüße
Bruno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]