JSP: Wie um zu überprüfen, ob ein Benutzer angemeldet ist?

JSP: Wie um zu überprüfen, ob ein Benutzer angemeldet ist?

Ich bin Java zu lernen Web, aber ich habe einige Probleme und ich brauche Hilfe.
Ich benutze eine Vorlage.jsp in der die ich-header.jsp, footer.jsp login.jsp (die linke Seite der Vorlage ) und ${param.content}.jsp. Für jede Seite mit dem Namen X. jsp habe ich eine andere jsp mit folgendem Inhalt, denn ich möchte jede Seite dasselbe layout:

<jsp:include page="template.jsp">
    <jsp:param name="content" value="X"/>
    <jsp:param name="title" value="Start navigate"/>`enter code here`
</jsp:include>

Wenn ich auf den Review-link,zum Beispiel, will ich einen redirect zu Überprüfen.jsp, aber ich habe einige Probleme.
In der Fußzeile.jsp-ich habe so etwas wie dieses:

(...)
< a href =" Review.jsp "> Review </a>
(...)

Nach dem login, ich versuche, klicken Sie auf Überprüfen, schickt er mich auf die Review.jsp, aber es zeigt mir, dass ich nicht angemeldet. Ich benutze das Spring-Framework, Tomcat 7, Eclipse, MySQL. Wenn ich mich einlogge, ich einen cookie:

String timestamp = new Date().toString();
String sessionId = DigestUtils.md5Hex(timestamp);
db.addSession(sessionId, username, timestamp);
Cookie sid = new Cookie("sid", sessionId);
response.addCookie(sid);

Für jede Methode, ich habe so etwas (ich habe das in einem tutorial):

@RequestMapping(value = "/writeReview", method = RequestMethod.GET)
public String nameMethod(@CookieValue("sid") String sid,...)

Verwendung der sid, kann ich herausfinden, wer der Benutzer ist. Ich habe eine Datenbank mit dem Konto des Benutzers und einige andere Tabellen. Das problem ist, dass wenn ich auf überprüfen oder alle anderen, es zeigt mir, dass ich nicht angemeldet. Was kann ich tun?

UPDATE:

Ich benutze JavaBean für die Benutzer-und login.jsp. Das JSP, das die text-box für den login, ich habe eine GET-Methode, wenn ich auf den button, um sich anzumelden.

@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView createCookie(
  @RequestParam("username") String username, @RequestParam("password") String password,
  HttpServletRequest request, HttpServletResponse response) throws SQLException {
      //code for creating the cookie here, after testing if the user is in my database
}

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

public String methodName(@CookieValue(required = false) String sid, Model model) {
    if (sid != null) {
        User user = getUserBySid(sid);
        model.addAttribute("user", user);
    }
    (..other data.)
    return "nameJSP.jsp";
}

Ich überprüfen in jeder JSP-wenn der username ist nicht leer, so ich sehen, ob ein Benutzer angemeldet ist. Die Anwendung geht gut, geht es Parameter, wenn ich nicht klicken Sie auf die links aus dem header oder footer. Das problem ist, dass ich mich übergeben muss , sagen wir mal, einen parameter aus einer JSP-wer ist der eigentliche Inhalt, das layout, um die JSP-bezeichnet durch die Fußzeile und diese JSP wird der nächste Inhalt von meinem layout. Das layout erkennt nur die Inhalte und Titel:

<title>${param.title}</title>
(I didn't paste all the code, I use a table <table>....)
<%@ include file="header.jsp"%>
<%@ include file="login.jsp"%>  
<jsp:include page="${param.content}.jsp"/> 
<%@ include file="footer.jsp"%>

Also wie kann ich einen parameter in dieser JSP-Datei, die empfangen werden von einem anderen JSP? Es wird auch auf die zugegriffen werden durch das layout.jsp und an den footer oder den header?

<jsp:include page="layout.jsp">
    <jsp:param name="content" value="X"/>
    <jsp:param name="title" value="Start navigate"/>
</jsp:include>
  • btw sollte Man nicht generieren session-ID selbst - es ist der Tomcat job. Und bitte angeben, wie genau <Zitat>es zeigt mir, dass ich mich nicht angemeldet</Zitat>
  • In der Regel, wenn Sie die benutzerdefinierte login-system, so zu sagen, von hand, nach Authentifizierung, die Sie hinzufügen, Benutzer-Daten (die beste Weise ist, um einige benutzerdefinierte User-Klasse), um die Sitzung wie diese: request.getSession().setAttribute("loggedInUser", user);, wo loggedInUser nur einige string-Bezeichner. Und es ist Tomcat generiert die erforderlichen session-id
  • Betrachten Sie diese Antwort von @BalusC, vielleicht wird es helfen Sie bekommen einige Hinweise: stackoverflow.com/a/1946121/814702
  • Ich habe einige neue Dinge über meinen code.
  • Und noch eine Anmerkung: es ist sehr empfohlen zu verwenden, doPost() oder, im Falle der Frühling method = RequestMethod.POST für die controller, die sich mit dem einloggen, sonst sensible Informationen werden sichtbar in der URL
  • Einige parameter(s) auf der mitgelieferten JSP: <jsp:include page="somePage.jsp" > <jsp:param name="param1" value="someValue" /> <jsp:param name="param2" value="anotherParam"/> .... </jsp:include> Sie tun es bereits

InformationsquelleAutor sonya | 2013-01-02
Schreibe einen Kommentar