IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

J2EE problème (java.lang.NullPointerException)


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut J2EE problème (java.lang.NullPointerException)
    Bonjour
    Je voudrais tester si un compte existe sur la base de données mais j'ai le problème suivant :

    java.lang.NullPointerException
    Metier.id_implementation.compte_existe(id_implementation.java:18)
    Web.id_test.doPost(id_test.java:51)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    voici la class implementation

    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
    package Metier;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
     
    import Metier.id_interface;
     
    public class id_implementation implements id_interface {
    	public static boolean test=false;
    	public static int id1=0;
    	public boolean compte_existe(String utilisateur, String mot_de_pass){
    		Connection cn = Connection_BDD.getConnection();
    		PreparedStatement stmt;	
    		try{ 
     
    		stmt = cn.prepareStatement("SELECT * FROM user where user=? and pssd=?");
    		stmt.setString(1, utilisateur);
    		stmt.setString(2, mot_de_pass);
    		ResultSet rs = stmt.executeQuery();
    		while (rs.next()) {
    			id1=rs.getInt("id");
    		}
    		}
    		catch(SQLException e){
     
    		}
    		if(id1 != 0)
    			test=true;
     
    		return test;
    	}
    }
    La servlet

    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
    package Web;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import Metier.id_implementation;
    import Metier.id_interface;
     
     
     
    @WebServlet("/id_test")
    public class id_test extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	private id_interface met;
    	public void init()throws ServletException{
    		met= new id_implementation();
    	}
        public id_test() {
            super();
            // TODO Auto-generated constructor stub
        }
     
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    			}
     
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String user= request.getParameter("user");
    		String pssd= request.getParameter("pssd");
    		Compte_model mod=new Compte_model();
    		mod.setUser(user);
    		mod.setPssd(pssd);
    		boolean test=met.compte_existe(user, pssd);
    		System.out.println(test);
     
    		request.setAttribute("modele", mod);
     
    		request.getRequestDispatcher("vue.jsp").forward(request, response);
     
    	}
     
    }
    j'ai essayé l'implémentation avec une class test et elle marche normal


    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
    import java.util.List;
     
     
    public class test_metier {
    	public static void main(String args[])
    	{
    		id_interface mt= new id_implementation();
     
    		boolean a=mt.compte_existe("a", "b");
     
    			System.out.println(a);
     
    	}
     
    }
    elle affiche true donc le compte existe sur la base de donées

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par fcstudio Voir le message
    j'ai essayé l'implémentation avec une class test et elle marche normal

    [...]

    elle affiche true donc le compte existe sur la base de donées
    Ça, tu n'en sais rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(SQLException e){
     
    		}
    Tu ignores et n'affiches même pas les erreurs avec la base !


    L'erreur est en ligne 18, donc à priori ici : stmt = cn.prepareStatement("SELECT * FROM user where user=? and pssd=?");. Donc probablement que cn vaut null. Tu peux le vérfier en debug, ou en affichant cn dans la console par exemple. Et le problème serait donc dans Connection_BDD.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci joel
    j'ai essayé d'afficher cn avec la console et elle s'affiche la valeur null.
    j'ai pas compris pour quoi, parce que l’orque j'ai essayé avec une Class test qui fait appelle a l'implémentation elle marche correctement

    voici la Class test

    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
    import java.util.List;
     
     
    public class test_metier {
    	public static void main(String args[])
    	{
    		id_interface mt= new id_implementation();
     
    		boolean a=mt.compte_existe("a", "b");
     
    			System.out.println(a);
     
    	}
     
    }

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu nous l'as déjà montré ce code, ça sert à rien de nous le remontrer ! En revanche, je t'ai dit que le problème était probablement dans Connection_BDD, ca c'est la méthode getConnection() de cette classe qui retourne null. C'est plutôt le code de la classe Connection_BDD qui nous intéresse...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Voici le Classe Connection_BDD

    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
    package Metier;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class Connection_BDD {
    	  public static Connection conn ;
    		static Statement stmt ;
    		ResultSet rs ;
    	  static{
    		  try {
    			  Class.forName("com.mysql.jdbc.Driver");
    			  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
     
    		  } catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	  }
     
    	public static Connection getConnection() {
    		return conn;
     
    	}
     
    	}

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et tu n'as aucune exception lors de la création de la connexion.

    Je verrais bien un problème dû au multithread : la variable conn n'étant pas encore affectée lors de l'appel de getConnection, le bloc static étant en cours d'exécution dans un autre thread.
    Multithread qui n'existe pas pour ton snippet de test.

    Essaye ça pour voir : au lieu de faire une affectation par bloc static (supprime-le), fait une affectation lazy, en rendant ta méthode getConnection synchronized :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static synchronized Connection getConnection() {
                    if ( conn==null ) {
                       try {
    			  conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
     
    		  } catch (Exception e) { 
    			e.printStackTrace();
    		  }
                    }
    		return conn;
     
    	}

    PS: et regarde tes MPs !!!
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    j'ai essayer ce que vous avez dit mais toujours elle retourne null
    j'ai essayer aussi d'afficher des messages sur la Class Connection_BDD dans la console mais rien ne s'affiche !!!!!
    donc je pense qu'il n'a pas une appelle correcte a la Class COnnection_BDD

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Mais, après ces modifications, tu recompiles bien et redéploies bien ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    oui plusieurs fois mais rien ne change !!!!!

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Finalement j'ai trouvé l'origine du problème
    j'ai essayé d'exécute le mm projet dans une autre version d'éclipse (Eclipse Jee Neon) et tous marche bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème java.lang.NullPointerException
    Par zikyoubi dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 14/08/2013, 14h53
  2. Problème java.lang.NullPointerException : null null
    Par info20111 dans le forum Général Java
    Réponses: 2
    Dernier message: 12/06/2013, 17h34
  3. Problème java.lang.NullPointerException
    Par ThE BiShOp* dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 29/05/2012, 09h51
  4. [Eclipse 3.2.2] Problème java.lang.NullPointerException
    Par richard_sraing dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 01/03/2011, 16h51
  5. Problème "java.lang.NullPointerException"
    Par driz764 dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 22/10/2008, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo