Aktuelle URL bei JSP?

Hallo zusammen,

ich habe ein Problem. Ich möchte in einer jsp-Datei die aktuelle URL auslesen, über die man auf die Seite gekommen ist. Im Endeffekt also das, was oben im Browser-Feld steht. Z.B.: „http://www.meineseite.de/home“. Bzw. mir würde auch das „/home“ reichen.

Ich kriege es aber nicht hin mit jsp. Meiner Meinung nach müsste das mit „request.getRequestURI()“ gehen. Da bekomme ich aber immer als Ergebnis: „/WEB-INF/jsp/index.jsp“. Welche Funktion kann ich denn sonst noch nutzen?

Gruß,
Pasqual

Hallo Pasqual,

ich würde vermuten, dass du den Request auch auf /WEB-INF/jsp/index.jsp abgesendet hast, denn getRequestURI() liefert immer die korrekte URL.

Kann es sein, dass du deinen Request irgendwie weiterleitest und der Request nicht direkt auf http://www.meineseite.de/home geht?

In solch einem Fall müsstest du die URL nämlich anders ermitteln, weil der Request auf /WEB-INF/jsp/index.jsp dann nachwievor ein einziger Request ist, auch wenn http://www.meineseite.de/home die Antwort liefert.

Grüße

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

Hallo und Danke schon mal für den Ansatz.

Ich habe in meinem Servlet tatsächlich das hier stehen:

RequestDispatcher disp = request.getRequestDispatcher("/WEB-INF/jsp/index.jsp");

Wenn ich das allerdings ändere in
RequestDispatcher disp = request.getRequestDispatcher("/home");
dann kriege ich beim Aufruf der Seite irgendwann einen StackOverflow-Error. Es macht dann den Anschein, als ob die Seite sich immer und immer wieder selbst aufruft.

Hüüüüülfe!!! :wink:

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

Hallo zusammen,

Z.B.: „http://www.meineseite.de/home“. Bzw. mir würde auch das
„/home“ reichen.

Das duerfte mit request.getContextPath() funktionieren.

Gruss
Patrick

Hallo und Danke schon mal für den Ansatz.

Ich habe in meinem Servlet tatsächlich das hier stehen:

RequestDispatcher disp =
request.getRequestDispatcher("/WEB-INF/jsp/index.jsp");

Wenn ich das allerdings ändere in
RequestDispatcher disp =
request.getRequestDispatcher("/home");
dann kriege ich beim Aufruf der Seite irgendwann einen
StackOverflow-Error. Es macht dann den Anschein, als ob die
Seite sich immer und immer wieder selbst aufruft.

Hüüüüülfe!!! :wink:

Ja, der StackOverFlow kommt dadurch, dass du die Weiterleitung dann in einer Schleife machst und der Server irgendwann booboo macht.

Du solltest dir vor der Weiterleitung die Adresse merken, zu der du weiterleitest, dazu hängst du einfach an den Request einen Value an, den du dann wieder auslesen kannst, und zwar mit request.setAttribute(„woherIchKomme“, value);
request.setAttribute(„wohinIchGehe“, value);

Wo auch immer du den Wert brauchst, liest du ihn dann einfach wieder mit request.getAttribute(„woherIchKomme“) wieder aus.

Nur so zum Verständnis: Das Request-Objekt ist ein einzelnes Objekt, dass sozusagen die Anfrage an sich darstellt. Ruft beispielsweise ein Client im Browser eine Resource ab z. B. http://www.megastarkeunternehmensportal.de/sub/sub/k… auf, dann leiten die meisten Pages auf die Hauptseite http://www.megas…de/ weiter, weil sich die Namen der Subpages häufig ändern. Es ist und bleibt aber nachwievor ein einziger Request, der einfach nur an eine andere Stelle weitergereicht wird. Dieses Request-Objekt, kann man aber an jeder Stelle, an der es weitergereicht wird, verändern und weitere Informationen anhängen.

Grüße vom
Shy

Hallo Shy,

vielen Dank für die Hilfe. Ich habe es nun endlich hinbekommen. Gar nicht so einfach, wenn man sonst alles mit PHP macht und dann durch die Uni gezwungen wird, sich mit dem MVC-Konzept zu beschäftigen. Da dauert es, bis man begriffen hat, was in welcher Reihenfolge wofür zuständig ist… Aber wie gesagt: es läuft jetzt! Jippieh! :smile:

Gruß,
Pasqual

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