Bonjour,
J'ai une servlet d'authentification et une servlet qui fournit une page html contenant une liste de film.
Si je veux exécuter ma servlet ListeFilm directement, il me redirige vers la servlet Authentification. Pour faire cela, lors de l'authentification, je crée une HttpSession et j'utilise un setAttribute("user", login);. Je récupère ainsi l'objet du coté de ListeFilm et si, le getAttribute("user"); me renvoie null -> je fais un sendRedirect("Authentification");.
Le problème est que, bizarrement, si j'accède donc à ListeFilm sans m'authentifier, la redirection marche mais après, même si le login & pass sont correctes, la servlet ListeFilm me redirige quand même vers Authentification.
Après debug, je me rends compte que la session n'est PAS conservée dans la servlet ListeFilm. Pourquoi ?
J'utilise NetBeans et donc le code :
Authentification.java :
ListeFilm.java:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public class Authentification extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html;charset=UTF-8"); PrintWriter out = res.getWriter(); try { String login = req.getParameter("login"); String password = req.getParameter("password"); HttpSession session = req.getSession(true); session.setAttribute("user", login); res.sendRedirect("/CaddieVirtuel/ListeFilm"); } finally { out.close(); } }
Si le "JOptionPane.showMessageDialog(null, "La session est nulle !");" est exécuté, c'est que ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 public class ListeFilm extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html;charset=UTF-8"); PrintWriter out = res.getWriter(); HttpSession session = req.getSession(false); if (session != null) { Object exist = session.getAttribute("user"); if (exist == null) { res.sendRedirect("http://localhost:8084/CaddieVirtuel/"); return; } } else { JOptionPane.showMessageDialog(null, "La session est nulle !"); } out.println("<html>"); out.println("<head>"); out.println("<title>Liste des films</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet ListeFilm at " + req.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); }
Merci d'avance.
Partager