JSP: Wie überprüft man, ob ein Benutzer angemeldet ist?

8

Ich lerne Java Web, aber ich habe ein paar Probleme und brauche Hilfe. Ich verwende eine template.jsp, in die ich header.jsp, footer.jsp, login.jsp (die linke Seite der Vorlage) und ${param.content}.jsp einbeziehe. Für jede Seite mit dem Namen X.jsp habe ich ein weiteres JSP mit dem folgenden Inhalt erstellt, weil ich möchte, dass jede Seite dasselbe Layout hat:

%Vor%

Wenn ich zum Beispiel auf den Link "Review" klicke, möchte ich zu Review.jsp weitergeleitet werden, habe aber einige Probleme. In footer.jsp habe ich so etwas:

%Vor%

Nach dem Login versuche ich auf Review zu klicken, es schickt mich zur Review.jsp, aber es zeigt mir, dass ich nicht eingeloggt bin. Ich benutze Spring Framework, Tomcat 7, Eclipse, MySQL. Wenn ich mich anmelde, erstelle ich einen Cookie:

%Vor%

Für jede Methode habe ich so etwas (ich habe das in einem Tutorial gesehen):

%Vor%

Mit Hilfe der Sid kann ich herausfinden, wer der Benutzer ist. Ich habe eine Datenbank mit dem Benutzerkonto und einigen anderen Tabellen. Das Problem ist, dass wenn ich auf "Review" klicke oder auf eine andere, zeigt es mir, dass ich nicht eingeloggt bin. Was kann ich tun?

AKTUALISIEREN :
Ich benutze JavaBean für Benutzer und login.jsp. Die JSP, die das Textfeld für die Anmeldung hat, habe ich eine GET-Methode, wenn ich auf die Schaltfläche zum Anmelden klicken.

%Vor%

Für jede Seite sende ich die SID und ich habe ein Attribut für das Modell, Benutzername:

%Vor%

Ich checke jede JSP ein, wenn der Benutzername nicht leer ist. So sehe ich, ob ein Benutzer angemeldet ist. Die Anwendung funktioniert gut, sie übergibt Parameter, wenn ich nicht auf die Links in der Kopf- oder Fußzeile klicke. Das Problem ist, dass ich, sagen wir, einen Parameter von einer JSP übergeben muss, der den tatsächlichen Inhalt des Layouts für die JSP darstellt, auf die sich die Fußzeile bezieht, und diese JSP wird der nächste Inhalt meines Layouts sein. Das Layout erkennt nur Inhalt und Titel:

%Vor%

Wie kann ich also einen Parameter in diese JSP aufnehmen, der von einer anderen JSP empfangen wird? Es muss auch von layout.jsp zugegriffen werden und an die Fußzeile oder die Kopfzeile gesendet werden?

%Vor%     
sonya 02.01.2013, 20:50
quelle

2 Antworten

10

Um einige Parameter an die mitgelieferte JSP zu übergeben:

%Vor%

Sie tun es bereits.

OK, die Details der Frage sind nicht sehr klar, aber ich habe die Idee.
Eine der Lösungen könnte die folgende sein.

In Ihrer Anmeldung Aktion, wenn die Authentifizierung erfolgreich war, erstellen Sie HttpSession und legen Sie ein Attribut für den authentifizierten Benutzer fest em>:

%Vor%

Und in dem Code, wo Sie kontrollieren, ob der Benutzer eingeloggt ist, überprüfen Sie einfach das Vorhandensein der entsprechenden HttpSession Attribut:

%Vor%


Oder Sie können auf Ihrer JSP-Seite prüfen, ob der Benutzer mit JSTL -Tags eingeloggt ist, wie im Beispiel von BalusC gezeigt wurde href="https://Stackoverflow.com/a/9135813/814702"> hier :

%Vor%

Filtert die Rettung

Normalerweise überprüfen Sie jedoch, ob der Benutzer angemeldet ist, um den Zugriff auf einige Seiten einzuschränken (so dass nur authentifizierte Benutzer darauf zugreifen können). Und Sie schreiben eine Klasse, die javax.servlet.Filter .

Hier ist ein Beispiel für den LoginFilter aus einem meiner Projekte:

%Vor%

In diesem Projekt habe ich einfache Servlets und JSP ohne Spring verwendet, aber Sie werden die Idee bekommen.

Und natürlich müssen Sie web.xml konfigurieren, um diesen Filter zu verwenden:

%Vor%


Hinweis :
Wenn Sie einen Webcontainer oder Anwendungsserver , der Servlet Version 3.0 und höher unterstützt, dann können Sie Ihre Filterklasse mit @ WebFilter Annotation. In diesem Fall muss der Filter nicht im Deployment-Deskriptor ( web.xml ). Ein Beispiel für die Verwendung der Annotation @WebFilter und weitere Informationen zum Filter finden Sie hier .

Hoffe, das wird dir helfen.

    
informatik01 03.01.2013, 09:46
quelle
-1

Oder benutzen Sie einfach:

%Vor%     
Yster 30.12.2015 14:46
quelle