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

Servlets/JSP Java Discussion :

Constructeur mal défini?


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Par défaut Constructeur mal défini?
    Bonjour ,
    Lorsque je fais "Client ClientCourant =new Client(clientDefinition);"
    Construction d'un objet à partir d'une chaine de caractère sur un JSP , tomcat me dit une erreur "Une erreur s'est produite à la ligne: 58 dans le fichier jsp: /traitement.jsp
    The constructor Client(String) is undefined"
    Alors que mon constructeur est parfaitement bien définie et il est compilé , de plus je ai placé client.class dans $TOMCAT/webapps/monapplication/WEB-INF/classes/

    Voila ma classe client:
    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    /************************************************************
    **************   Classe Client  *****************************
    ************************************************************/
     
     
    import java.sql.*;
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    import java.util.Date;
     
     
     
     
    public class Client implements java.io.Serializable {
    /************************************************************
    **************   Attributs  *********************************
    ************************************************************/
     
    private String nom;
    private String motDePasse;
    private String prenom;
    private String age;
    private String pays;
    private String adresse;
    private String codePostal;
    private String ville;
    private String mail;
    private String sexe;
    private String nomVar[]={"mail","nom", "prenom", "age" , "pays","adresse","codePostal","ville","sexe"};
     
    /************************************************************
    **************   constructeurs*******************************
    ************************************************************/
    public Client(String Parametres){
    String[] ParamUtilisable = Parametres.split(",");
    this.mail=ParamUtilisable[0];this.nom=ParamUtilisable[1];this.prenom=ParamUtilisable[2];this.age=ParamUtilisable[3];this.sexe=ParamUtilisable[4];this.pays=ParamUtilisable[5];this.ville=ParamUtilisable[6];this.adresse=ParamUtilisable[7];this.codePostal=ParamUtilisable[8];this.motDePasse=ParamUtilisable[9];
    }
     
    public Client(String mail,String nom,String prenom,String age,String sexe,String pays,String adresse,String ville,String codePostal,String motDPasse)
    {this.motDePasse=motDePasse;this.nom=nom;this.prenom=prenom;this.age=age;this.adresse=adresse;this.codePostal=codePostal;this.ville=ville;this.mail=mail;this.sexe=sexe;this.pays=pays;}
     
     
    /************************************************************
    **************   getter/setter*******************************
    ************************************************************/
     
     
    public String getNom(){return this.nom;}
    public void setNom(String a){ this.nom=a;}
     
    public String getSex(){return this.sexe;}
    public void setSexe(String a){this.sexe=a;}
     
    public String getMotDePasse(){return this.motDePasse;}
    public void setMotDePasse(String a){ this.motDePasse=a;}
     
    public String getPrenom(){return this.prenom;}
    public void setPrenom(String a){this.prenom=a;}
     
    public String getAge(){return this.age;}
    public void setAge(String a){ this.age=a;}
     
    public String getAdresse(){return this.adresse;}
    public void setAdresse(String a){this.adresse=a;}
     
    public String getPays(){return this.pays;}
    public void setPays(String pays){this.pays=pays;}
     
    public String getCP(){return this.codePostal;}
    public void setCP(String b){this.codePostal=b;}
     
    public String getVille(){return this.ville;}
    public void setVille(String a){this.ville=a;}
     
    public String getMail(){return this.mail;}
    public void setMail(String newMail){this.mail=newMail;}
     
    /************************************************************
    ***************   METHODES *********************************
    ************************************************************/
    public void insertBase(Connection cnx) throws SQLException{
    java.sql.Statement req= cnx.createStatement();
    String requete="INSERT INTO Client VALUES('";
    StringBuilder sb = new StringBuilder(requete);
    sb.append(this.mail+"','");sb.append(this.nom+"','");sb.append(this.prenom+"','");sb.append(this.age+"','");sb.append(this.sexe+"','");sb.append(this.pays+"','");sb.append(this.ville+"','");sb.append(this.adresse+"','");sb.append(this.codePostal+"','");sb.append(this.motDePasse+"'\"");
    req.executeUpdate(sb.toString());
    req.close();}
     
    public void updateBase(Connection cnx)throws SQLException{
    java.sql.Statement req= cnx.createStatement();
    req.executeUpdate("UPDATE Client SET Nom='this.nom' Prenom='this.prenom' Age='this.age' Sexe='this.sexe' Pays='this.pays' Ville='this.ville' Adresse='this.adresse' CP='this.codePostal' WHERE Mail=this.mail");
    req.close();} 
     
    /**************************************************************************
    Connecte une client , renvoie true si la connexion est établie false sinon
    ****************************************************************************/
    public boolean Connect(Connection cnx,String ValueMail,String motpasse)throws SQLException{
    java.sql.Statement req= cnx.createStatement();
    ResultSet rs=req.executeQuery("SELECT password FROM Client WHERE mail='ValueMail'");
    if( (rs.getString("password")).equals(motpasse)){
     
    req.close();
    return true;
    }else{req.close();
    return false;}
    }
     
    public void courantUpdate(){
    }
    /************************************************************************** 
    Methode à verifier ou trouver une astuce 
     * @throws SQLException 
    **************************************************************************/
    public void LoadParameter(Connection cnx,String ValueMail) throws SQLException{ 
    java.sql.Statement req= cnx.createStatement();
    ResultSet rs  =req.executeQuery("SELECT * FROM client WHERE 'mail=ValueMail'");
    setMail(rs.getString("mail"));
    setNom(rs.getString("nom"));
    setPrenom(rs.getString("prenom"));
    setAge(rs.getString("age"));
    setSexe(rs.getString("sexe"));
    setPays(rs.getString("Pays"));
    setVille(rs.getString("ville"));
    setAdresse(rs.getString("adresse"));
    setCP(rs.getString("codePostal"));
    req.close();
    /*String[] rs = new String[8];
    Personne instanceClient = new Client();
    for(int i=0; i<nomVar.length; i++)
     {
       BeanUtils.setProperty(instance,nomVar[i],executeQuery("SELECT "+nomVar[i]"FROM Client WHERE mail.equals('ValueMail')");
     }*/
     
     
    }
    public boolean ExistBase(Connection cnx,String ValueMail)throws SQLException{
    java.sql.Statement req= cnx.createStatement();
    ResultSet rs=req.executeQuery("SELECT mail FROM Client WHERE mail='ValueMail'");
    if( (rs.getString("mail")).equals(ValueMail)){
    req.close();
    return true;
    }else{req.close();
    return false;}
    }
    }
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    montre ta JSP.

    Tu as quand même une façon assez "particulière" de faire du JAVA :
    - style de codage ;
    - architecture ;
    - besoins / solutions.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 99
    Par défaut
    En faite je ne suis pas du tout étudiant en informatique donc je pense qu'il doit me manquer des bases mais j'essaie de me debrouiller pour y arriver :/

    Voila ma jsp

    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
    <@page import=verification.java>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ pageimport="java.util.*" %><%@ pageimport="java.awt.*"%>
    <%@ pageimport="javax.servlet.*"%>
    <%@ pageimport="java.sql.*"%>
    <%@ pageimport="javax.sql.*"%>
    <%@ pageimport="javax.naming.*"%>
    <%@ pageimport="javax.servlet.http.*"%>
     
    <html>
    <!--******************************************************************************
    Connexion au serveur à remplacer par du JSTL 
    *******************************************************************************-->
     <%! DataSource pool;
     Connection cnx=pool.getConnection();%>
    	%>
     <head>
            <title>Le Site Web</title>
        </head>
     
    	<link rel="stylesheet" type="text/css" href="style.css">
        <body>
    	<div id="navbar_ex6">
     
    <ul><center>
     
    <li><a href="Accueil.jsp">Accueil</a></li>
     
    <li><a href="Contact.jsp">Contact</a></li>
     
    <li><a href="Inscription.jsp">S'inscrire</a></li>
     
    <li><a href="CV.jsp">CV</a></li>
    </center>
    </ul>
     
    </div>
     
            <IMG align="right" src="my.jpg"width="85" height="70"/>
            		<BR><BR>
     
     
    		<BR>
    		<BR>//recuperer la taille d'une enumeration ??
    		<!--*******************************************************************
    utilisation de JSTL pour verifier basiquement les paramètre du formulaire
     *******************************************************************-->
    	 <%!
     String [] ParameterValues = new String [11];
     String clientDefinition;
     int i=0;%>
     <%
     for (Enumeration e =request.getParameterNames ();e.hasMoreElements() ;){
     ParameterValues[i]=request.getParameter((String)e.nextElement());
     if(i<10){clientDefinition=clientDefinition+((String)e.nextElement())+",";}
     else{clientDefinition=clientDefinition+((String)(e.nextElement()));}
     i++;}
     Client ClientCourant =new Client(clientDefinition);
     session.setAttribute("Client", ClientCourant);
            boolean a=ClientCourant.ExistBase(cnx,request.getParameter("Mail"));%>
     <c:choose>
     
     <c:when test="${(ParameterNames[1]!=ParameterNames[2])||(ParameterNames[10]!=ParameterNames[11])}">
     <jsp:forward page="Inscription.jsp"/></c:when>
     <c:when test="${(a==true)}"><jsp:forward page="Inscription.jsp"/></c:when>
     <c:otherwise>
     <% ClientCourant.insertBase(pool);%>
     <c:out value="Inscription validée si la redirection ne fonctionne pas cliquer <a href='Inscription.jsp'>ici</a><BR><BR>"/>
     <jsp:forward page="ListeClient.jsp"/>
     
     </c:otherwise></c:choose>
    		Votre nom est <%=request.getParameter("Nom")%>

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut
    Bonjour !
    alors comme le dit fxrobin, c'est un peu spécial, mais je pense avoir réussit à regler quelques truc.

    Premièrement, ta liste d'import dans ta JSP doit plutot ressembler à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%@ page import="java.util.*"
    		import="java.awt.*"
      		import="javax.servlet.*"
     		import="java.sql.*"
     		import="javax.sql.*"
     		import="javax.naming.*"
     		import="javax.servlet.http.*"
     
     		%>
    Biensur, rajoute ce que tu a besoin. Pour que l'objet Client soit reconnu, il faut être sur de bien l'importer. Or, je ne voit rien dans tes import en relation avec ce fameux Client.
    Pour l'importer, il te faudra renseigner ton nom de package et rajouter une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import="<Package>.Client"
    Dans la liste des import que je t'ai donner plus haut.
    Si tu a encore des problèmes, n’hésite pas. Si je peux t'aider ça sera avec plaisir ;-)

    Edit : Ah oui, j'oubliais : aux lignes 15 et 16 de ta JSP, tu ferme deux fois la balise %>
    Je ne suis pas sur que ce soit grave mais je pense que dans tout les cas c'est moins bien...

  5. #5
    Membre expérimenté
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Par défaut
    Citation Envoyé par Couci Voir le message
    Bonjour !
    Premièrement, ta liste d'import dans ta JSP doit plutot ressembler à cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%@ page import="java.util.*"
    		import="java.awt.*"
      		import="javax.servlet.*"
     		import="java.sql.*"
     		import="javax.sql.*"
     		import="javax.naming.*"
     		import="javax.servlet.http.*"
     
     		%>
    Biensur, rajoute ce que tu a besoin. Pour que l'objet Client soit reconnu, il faut être sur de bien l'importer. Or, je ne voit rien dans tes import en relation avec ce fameux Client.
    D'accord avec toi qu'il manque l'import de la classe Client, mais pas d'accord pour ta liste d'imports!!! Et pas d'accord, d'une manière générale, pour avoir des import quelquechose.*
    En fait Couci, je pense que tu instancies une autre classe Client que celle que tu as créé... Du coup elle ne possède pas le constructeur que tu appelles. En Java le nom complet des classes inclut un nom de package.
    Il faut que tu ajoutes une ligne au début de ta classe (ça doit être la première ligne de code). Par exemple :
    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
    package fr.application;
    /************************************************************
    **************   Classe Client  *****************************
    ************************************************************/
     
     
    import java.sql.*;
    import java.lang.*;
    import java.io.*;
    import java.util.*;
    import java.util.Date;
     
     
     
     
    public class Client implements java.io.Serializable {
    /************************************************************
    **************   Attributs  *********************************
    ************************************************************/
     
    private String nom;
    Dans cet exemple, pour être sûr d'appeler cette classe et pas une autre, tu modifieras ta déclaration comme cela, dans un premier temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Client ClientCourant =new Client(clientDefinition);
    fr.application.Client clientCourant =new fr.application.Client(clientDefinition);
    Ensuite, pour ne pas avoir à écrire le nom du package à chaque fois (qui peut être beaucoup plus long), on fait des imports. Dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import fr.application.Client
    qui va te permettre de simplifier ta déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Client clientCourant =new Client(clientDefinition);
    J'espère que mes explications te permettrons d'alléger tes imports dans ta JSP et de ne garder que ce qui est nécessaire...

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut
    A karbos : Au temps pour moi ! J'ai effectivement oublier de parler du package dans la classe Client ! Pourtant pour mes test, c'est la première chose que j'ai fait ^^

    Sinon, je suis bien d'accord avec toi pour la liste des import quelquechose.* mais j'ai repris le code de tonytrua, c'est lui qui demande des précisions, pas moi :-)

    D'ailleurs on ne sais pas où il en est ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/06/2011, 12h25
  2. trigger mal défini
    Par frp31 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 03/02/2010, 15h26
  3. Réponses: 5
    Dernier message: 17/04/2008, 13h22
  4. [web.xml] rôles de sécurité mal définis
    Par mlequim dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 01/12/2005, 14h50
  5. Réponses: 3
    Dernier message: 12/05/2003, 12h11

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