2010-03-09 3 views
0

J'ai créé une page de connexion pour mon projet "student information system" qui contient les champs de texte username, userid et password.i essayé de stocker la valeur de nom d'utilisateur et userid dans l'objet session et l'utiliser dans une autre page mais il renvoie une valeur nulle.objet de session renvoyant null

Répondre

0

Plusieurs causes:

  1. l'avoir placé à la session dans le mauvais sens (qui devrait être fait par session.setAttribute(key, value)).
  2. L'autre page se trouve dans un domaine/contexte différent (et n'utilise donc pas la même session). Un élément a invalidé la session (par exemple session.invalidate()).
  3. Le client ne prend pas en charge les cookies et vous n'avez pas ajouté le support de réécriture d'URL.
  4. Vous y accédez dans la session dans le mauvais sens (doit être fait par session.getAttribute(key) ou ${key}).

Le login.jsp exemple suivant ..

<form action="login" method="post"> 
    Username: <input type="text" name="username"><br> 
    Password: <input type="password" name="password"><br> 
    <input type="submit" value="login"> 
    <span class="error">${error}</span> 
</form> 
<p>Debug info: your current session ID is ${pageContext.session.id}</p> 

..avec un servlet mappée sur /login qui a essentiellement ce qui suit dans doPost() ..

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String username = request.getParameter("username"); 
    String password = request.getParameter("password"); 
    User user = userDAO.find(username, password); 
    if (user != null) { 
     request.getSession().setAttribute("user", user); 
     response.sendRedirect(response.encodeRedirectURL("home.jsp")); 
    } else { 
     request.setAttribute("error", "Unknown login, try again"); 
     request.getRequestDispatcher("login.jsp").forward(request, response); 
    } 
} 

..et un home.jsp qui ont l'air comme ceci ..

<p>Welcome, ${user.name}!</p> 
<p>Debug info: your current session ID is ${pageContext.session.id}</p> 

..dould juste travailler.

Assurez-vous que l'ID de session est le même dans les deux pages. À des fins de débogage, vous pouvez l'afficher par ${pageContext.session.id} comme indiqué dans les extraits de code JSP ci-dessus. Si c'est la même chose et que l'objet User n'est toujours pas là, alors le problème se situe ailleurs.

Questions connexes