JSP: Comment faire pour vérifier si un utilisateur est connecté?

JSP: Comment faire pour vérifier si un utilisateur est connecté?

Je suis en train d'apprendre Java pour le Web, mais j'ai quelques problèmes et j'ai besoin d'aide.
Je utiliser un modèle.jsp dans laquelle j'inclus l'en-tête.jsp, le pied de page.jsp, connexion.jsp (sur le côté gauche du modèle ) et ${param.content}.jsp. Pour chaque page nommée X. jsp j'ai fait un autre jsp avec le contenu suivant, parce que je veux que chaque page pour avoir la même mise en page:

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

Quand je clique sur l'Examen du lien,par exemple, je veux être rediriger vers d'Examen.jsp, mais j'ai quelques problèmes.
Dans le pied de page.jsp j'ai quelque chose comme ceci:

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

Après la connexion, j'ai essayer de cliquer sur l'Examen, il m'envoie à l'Examen.jsp, mais il me montre que je ne suis pas connecté. J'utilise le Framework Spring, Tomcat 7, Eclipse, MySQL. Lorsque je me connecte, j'ai créer un 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);

Pour chaque méthode, j'ai quelque chose comme ça (je l'ai vu dans un tutoriel):

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

À l'aide de la sid, je peux savoir qui est l'utilisateur. J'ai une base de données avec le compte de l'utilisateur et de certains autres tables. Le problème est que lorsque je clique sur l'examen ou de tout autre, il me montre que je ne suis pas connecté. Que puis-je faire?

Mise à JOUR:

J'utilise JavaBean pour l'utilisateur et la connexion.jsp. La JSP qui a la zone de texte pour la connexion, j'ai une méthode GET quand je clique sur le bouton pour vous connecter.

@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
}

Pour chaque page, j'ai envoyer le sid et j'ai un attribut pour le modèle, nom d'utilisateur:

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";
}

J'ai vérifier dans chaque JSP si le nom d'utilisateur n'est pas vide, c'est ainsi que je vois si un utilisateur est connecté. L'application va bien, il passe les paramètres si je ne clique pas sur les liens de l'en-tête ou le pied de page. Le problème c'est que je dois passer , disons, un paramètre à partir d'une JSP qui est le contenu réel de la mise en page de la page JSP visées par le pied de page et cette JSP sera le prochain contenu de ma mise en page. La mise en page seulement reconnaître le contenu et le titre:

<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"%>

Alors, comment puis-je inclure un paramètre dans cette JSP qui seront reçus à partir d'un autre JSP? Aussi, il devra être accessible en fonction de la disposition.jsp et envoyé pour le pied de page ou l'en-tête?

<jsp:include page="layout.jsp">
    <jsp:param name="content" value="X"/>
    <jsp:param name="title" value="Start navigate"/>
</jsp:include>
btw, Vous ne devriez pas générer des ID de session vous-même - c'est de Tomcat travail. Et de préciser de quelle manière exactement <citation>il me montre que je ne suis pas connecté</citation>
En règle générale, si vous êtes à la mise en œuvre de connexion personnalisée du système, pour ainsi dire, par la main, après authentification, vous ajoutez les données de l'utilisateur (le meilleur moyen est d'utiliser un certain personnalisé de l'Utilisateur de la classe) pour la session comme ceci: request.getSession().setAttribute("loggedInUser", user);, où loggedInUser est juste une chaîne de caractères identifiant. Et c'est Tomcat qui va produire les id de session
Regardez cette réponse par @BalusC, peut-il vous aidera à obtenir quelques indices: stackoverflow.com/a/1946121/814702
J'ai ajouté quelques nouvelles choses à propos de mon code.
Et encore une remarque: il est très recommandé d'utiliser doPost() ou, en cas de Printemps, method = RequestMethod.POST pour le contrôleur, qui traite de la connexion, autrement informations sensibles seront visibles dans l'URL

OriginalL'auteur sonya | 2013-01-02