Servlet soll wissen welche JSP es aufgerufen hat

Vatar

Erfahrenes Mitglied
Nabend.
Ich bastele eine kleine Applikation und möchte mit einem Servlet mehrere JSP handeln.
Ich dachte ich könnte im Servlet mit
Code:
String a = request.getRequestURI()
die aufrufende JSP in erfahrung bringen. Aber irgendwie gibt er mir immer nur die URI des Servlets aus
 
Hallo!

Mit
Code:
  String a = request.getRequestURI()
bekommst du nur die URI an die der Request geschickt wurde...

Versuchs doch mal mit:
Code:
  request.getHeader("referer")
;-) ( Ich hoffe du baust keinen Sicherheitsmechanismus auf Refererbasis... ;-)

Gruß Tom
 
Danke.
Keine Angst um die Sicherheit...ich will nur mehrere JSPs über ein ControllerServlet bearbeiten.
 
Jetzt hab ich doch noch ein kleines Problem.
Und zwar möchte ich die Login.jsp von jeder anderen Seite aus aufrufen, und bei erfolgreichem anmelden wieder zu der Seite springen von welcher aus das Login aufgerufen wurde. Das funktioniert eigentlich ganz gut, bis auf eine kleine Endlosschleife *gg*.

Das Login wird in meinem MainControllerServlet bearbeitet.
Zum Schluss führe ich folgendes aus
Code:
response.setHeader("referer", "/index.jsp");
forwardTo(pageURL, request, response) // wobei pageURL wieder mein MainControllerServlet enthällt, da eventuell EJB-Komponenten aufgerufen werden müssen
Leider steht im nächsten (und allen volgenden Durchläufen) immer noch /Login.jsp im Header
 
Ich hab jetzt die Idee "das Login von jeder anderen Seite aufzurufen und zurückzuspringen" aufgegeben, da es nicht gefordert, und mir jetzt einfach zu umständlich ist :),

Allerdings habe ich dann immer noch ein größeres Problem:
index.jsp -> login.jsp (mit name anmelden) -> ProcessLogin (Servlet) -> forward zur index.jsp
wenn ich jetzt versuche eine andere jsp aufzurufen funktioniert es nicht, da als aufrufende Datei immer noch das ProcessLogin angegeben ist (es sollte aber index.jsp drinstehen).

Melde ich mich nicht am über die Login.jsp an, so funktionieren die Aufrufe der folgenden Seiten.

?
 
Hallo!

Schau dir doch mal dies hier an:
http://www.tutorials.de/tutorials189049.html&highlight=Login
Dort ist beschrieben wie man Prinzipiell einen geschützten Bereich innerhalb des Tomcats definiert (hier der Einfachheit halber nur in Form einer XML Datei (tomcat-users.xml). Es gibt natürlich auch andere Realmimplementierungen die die User Credentials beispielsweise aus der Datenbank fischen können.

Wenn du einen solchen Realm definierst werden alle Anfragen unauthentifizierter Benutzer zunächst an ein Login-Formular weitergeleitet. Nach erfolgreicher Authentifizierung wird der Benutzer wieder an die Ursprünglich angefragte Resource vermittelt.

Gruß Tom
 
Danke für den Link, aber wir nutzen den WebSphere-Server 5.1.

Das Problem mit meinem referer konnte ich (so glaube ich) identifizieren.
Wenn mein Servlet die erste JSP handelt wird ja am Ende ein forward durchgeführt.
Code:
getServletContext().getRequestDispatcher(jspname).forward(request, response)

und ich glaube genau darin liegt dass Problem. Ich leite den urspünglichen Request (mit seinem gesammten Inhalt) ja auch weiter an die folgende JSP. Wenn diese dann wieder eine Anfrage an ein Servlet richtet, so stehen noch die HeaderDaten der allerersten JSP drin (z.B. der referer)!
Das ist zumindest die einzige Ursache die mir eingefallen ist, da ich dieses Problem immer dann bekomme wenn ich eine 2te JSP über mein Servlet aufrufen will.

Langsam wird's mit der Zeit auch knapp :eek: . Ich hoffe es gibt eine Lösung für dieses Problem.

thx
 
Hallo!

Schon klar, aber auch beim WAS sollte es doch moeglich sein solche Realms einzurichten, so dass man nicht auf "solche" umstaendlichen und fehleranfaelligen Konstrukte zurueckgreiffen muss ;-)

Gruss Tom
 
Ja das sollte eigentlich mit dem WebSphere auch möglich sein (belegt ja schließlich auch genug Platz auf meiner Kiste :) ), allerdings wird die Zeit wohl nicht ausreichen. Werds mir aber mahl zu Gemüte führen.

Mein größtes Problem ist im Moment noch dieses forwarding (hat also eigentlich nix mehr mit dem Thread zu tun). Sobald ich ein zweites Mal (hintereinander) über mein Servlet gehe erhalte ich immer noch die request-daten des vorherigen aufrufs.

thx
 

Neue Beiträge

Zurück