Bonjour,
J'essaie de faire fonctionner une application J2EE basique en reprenant l'exemple d'un livre.
J'aiun problème à l'execution, erreur java.NullPointerException.
Après recherche et plusieurs tests, j'ai identifié la source du problème, par contre je ne le comprends pas, voici le code :
Servlet est mon controlleur dans lemodèle mvcElle fait appel à la classe AccessBd qui fait partie du modèle
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 public class Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); AccessBd accessbd = (AccessBd) session.getAttribute("accessbd"); if(accessbd == null) { System.err.println("accesbd null"); accessbd = new AccessBd(request, response); session.setAttribute("accessbd", accessbd); } else { System.err.println("accesbd non null"); ... } String formulaire = request.getParameter("formulaire"); if(formulaire == null) { if(accessbd == null) { System.err.println("encore accesbd null"); } if(accessbd.cnx == null) { System.err.println("avant appel cnx null"); } ListePersonne liste = accessbd.getListePersonne(); ---> ligne qui pose problème ... }
à l'execution dans laconsole :
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 ublic class AccessBd { Connection cnx = null; HttpServletRequest request = null; HttpServletResponse response = null; public AccessBd(HttpServletRequest request, HttpServletResponse response) { this.request = request; this.response = response; try{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/bdtest"; cnx = DriverManager.getConnection(url, "root", "active"); if (cnx == null) { System.err.println("cnx null instanciation"); } } catch(ClassNotFoundException e) { displayException(e); } catch(SQLException e) { displayException(e); } } public ListePersonne getListePersonne() { try { if(cnx != null) System.err.println("cnx non null"); else System.err.println("cnx null"); Statement st = cnx.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM personne"); ListePersonne listePersonne = new ListePersonne(); while(rs.next()) { ... } st.close(); rs.close(); return listePersonne; } catch (SQLException e) { displayException(e); } return null; }
accesbd null
avant appel cnx null
cnx null
Donc l'instanciation de AccessBd semble être fonctionnelle, j'obtiens bien une connection vers mon SGBD mais, pourtant lors de l'appel de la fonction getListpersonne, ma connection semble être nulle.
Je ne comprends pas trop pourquoi,
Désolé pour le long post
Partager