Bonjour,
J'ai un PPE en BTS SIO qui nous demande de créer une application en JEE avec une base de données SQL pour la gestion des visiteurs GSB avec différentes fonctionnalités. De mon côté, je dois une interface d'authentification d'utilisateur pour qu'il puisse se connecter à l'application. J'ai donc créé une servlet ServletAuthentification, un bean Utilisateur et une classe DAO UtilisateurDAO. Voici les codes nécessaires :
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 public class UtilisateurDAO { static PreparedStatement requete = null ; static ResultSet rs = null ; RequestDispatcher dispatcher ; public static Utilisateur seConnecter(Connection connexion, String loginSaisi, String mdpSaisi) { Utilisateur unUser = new Utilisateur() ; try { // Préparation de la requête requete = connexion.prepareStatement("SELECT * FROM UTILISATEUR WHERE UTI_LOGIN LIKE ?") ; requete.setString( 1, loginSaisi ) ; // Exécution de la requête rs = requete.executeQuery() ; if (rs != null) { if (rs.next()) { String rightLogin = rs.getString("UTI_LOGIN") ; String rightMdp = rs.getString("UTI_MDP") ; if ( (rightLogin.equals(loginSaisi)) && (rightMdp.equals(mdpSaisi)) ) { unUser.setNom(rs.getString("UTI_NOM")) ; unUser.setPrenom(rs.getString("UTI_PRENOM")) ; } else { System.out.println("Erreur d'authentification!"); } } } } catch (SQLException e) { e.printStackTrace() ; } return unUser; } }
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94 public class ServletUtilisateur extends HttpServlet { Connection connexion = null ; static PreparedStatement requete = null ; static ResultSet rs = null ; @Override public void init() { ServletContext servletContext = getServletContext(); connexion = (Connection) servletContext.getAttribute("connexion"); } /** * 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 request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { /* TODO output your page here. You may use following sample code. */ out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet ServletUtilisateur</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet ServletUtilisateur at " + request.getContextPath() + "</h1>"); out.println("</body>"); out.println("</html>"); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String URL = request.getRequestURI(); Utilisateur unUser = new Utilisateur(); //HttpSession session = request.getSession(); RequestDispatcher dispatcher ; if (URL.equals("/GSB/login")) { // Récupération des valeurs saisies dans les champs du formulaire de connexion String identifiant = (String)request.getParameter("txt_login"); String mdp = (String)request.getParameter("txt_mdp"); // Appel de la fonction de connexion d'un utilisateur unUser = UtilisateurDAO.seConnecter(connexion, identifiant, mdp) ; // Redirection vers la page test.jsp getServletContext().getRequestDispatcher("/accueil.jsp").forward(request, response); } processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }Voici mon problème :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 public class Utilisateur implements java.io.Serializable { private String matricule ; private String nom ; private String prenom ; private String adresse ; private String codePostal ; private String dateEmbauche ; private String login ; private String mdp ; private ArrayList<RapportVisite> listeRapport ; public Utilisateur() { } public Utilisateur(String matricule, String nom, String prenom, String adresse, String codePostal, String dateEmbauche, String login, String mdp) { this.matricule = matricule; this.nom = nom; this.prenom = prenom; this.adresse = adresse; this.codePostal = codePostal; this.dateEmbauche = dateEmbauche; this.login = login; this.mdp = mdp; } public String getMatricule() { return matricule; } public void setMatricule(String matricule) { this.matricule = matricule; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public String getAdresse() { return adresse; } public void setAdresse(String adresse) { this.adresse = adresse; } public String getCodePostal() { return codePostal; } public void setCodePostal(String codePostal) { this.codePostal = codePostal; } public String getDateEmbauche() { return dateEmbauche; } public void setDateEmbauche(String dateEmbauche) { this.dateEmbauche = dateEmbauche; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getMdp() { return mdp; } public void setMdp(String mdp) { this.mdp = mdp; } public ArrayList<RapportVisite> getListeRapport() { return listeRapport; } public void setListeRapport(ArrayList<RapportVisite> listeRapport) { this.listeRapport = listeRapport; } }
Lors de l'envoi des données du formulaire que voici :
l'erreur 500 que voici :
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 <html> <head> <title>GSB - Authentification</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <header> <%@include file="../includes/header.jsp" %> <br /><br /><br /><br /><br /><br /> </header> <body> <fieldset> <legend>Authentification</legend> <form action="login" method="POST"> <table border="0"> <tr> <td>Nom d'utilisateur*</td> <td><input type="text" name="txt_login" size="30" required /></td> </tr> <tr> <td>Mot de passe*</td> <td><input type="password" name="txt_mdp" size="30" required /></td> </tr> <tr> <td><input type="submit" value="Se connecter" /></td> </tr> </table> </form> </fieldset> </body> <footer> <%@include file="../includes/footer.jsp" %> </footer> </html>
apparait. J'ai regardé d'où ça venait et apparement, c'est la variable connexion qui génère cette erreur. J'amerais savoir comment on peut régler cette erreur.
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 type Rapport d''exception message description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête. exception java.lang.NullPointerException gsb.classes.UtilisateurDAO.seConnecter(UtilisateurDAO.java:27) gsb.servlets.ServletUtilisateur.doPost(ServletUtilisateur.java:101) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
Bien cordialement,
trackeur14
Partager