Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > JDBC
JDBC Forum d'entraide sur l'API JDBC (Java Database Connectivity) et l'accès aux bases de données. Avant de poster -> FAQ JDBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/04/2012, 18h33   #1
mumu27
Membre régulier
 
Avatar de mumu27
 
Développeur informatique
Inscription : mars 2009
Messages : 183
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 183
Points : 95
Points : 95
Par défaut Connexion entre Eclipse et MySQL avec Tomcat

Bonjour,

j'utilise Eclipse Java EE avec Tomcat, mais je voudrais faire un exercice qui utilise MySQL afin de créer une table avec un certain nombre de données dedans. J'utilise un pool de connexion, c'est pourquoi j'utilise le fichier exemple15.xml sous tomcat/conf/Catalina/localhost/:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Context path="/exemple15" reloadable="true"
docBase="J:\PROJETWEB\exemple15"
workDir="J:\PROJETWEB\exemple15\work">
	<Resource name="jdbc_struts2_MySQL"
		auth="Container"
		type="javax.sql.DataSource"
		username="root"
		password=""
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/struts2"
		maxActive="20"
		maxIdle="10"
		validationQuery="SELECT 1"/>
</Context>
Ensuite j'ai installé le pilote mysql-connector-java-5.1.19-bin.jar dans le répertoire tomcat/lib.

Bref apparemment tout fonctionne lorsque j'exécute mon application, sauf qu'evidemment je n'ai pas les données de la table qui apparaissent, car je ne sais pas comment exécuter les requêtes ci-dessous sous Eclipse:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 
-- Structure de la table `client`
-- 
 
CREATE TABLE `client` (
  `idClient` int(11) NOT NULL auto_increment,
  `identifiant` varchar(20) character set utf8 NOT NULL default '',
  `motdepasse` varchar(20) character set utf8 NOT NULL default '',
  PRIMARY KEY  (`idClient`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=5 ;
 
-- 
-- Contenu de la table `client`
-- 
 
INSERT INTO `client` (`idClient`, `identifiant`, `motdepasse`) VALUES (1, 'jlafosse', 'jerome');
INSERT INTO `client` (`idClient`, `identifiant`, `motdepasse`) VALUES (2, 'astapane', 'amelie');
INSERT INTO `client` (`idClient`, `identifiant`, `motdepasse`) VALUES (3, 'amartin', 'alain');
INSERT INTO `client` (`idClient`, `identifiant`, `motdepasse`) VALUES (4, 'pleroy', 'pierre');
Bref, comment pourrais-je créer ma base de données MySQL, nommée "struts2" avec une table client et trois champs: idClient, identifiant et motdepasse.

Merci d'avance pour votre réponse.

Mumu27!
mumu27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 21h32   #2
mumu27
Membre régulier
 
Avatar de mumu27
 
Développeur informatique
Inscription : mars 2009
Messages : 183
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 183
Points : 95
Points : 95
J'ai fait quelques modifications à mes fichiers au vu des différents forums que j'ai pu consulter.

Voici l'arborescence de mon projet dans Eclipse Java EE:

/WEB-INF/src
exemple15
ClientAction.java
Ajouter_Client-validation.xml
ClientAction-Modifier_Client-validation.xml
exemple15.boiteoutils
ApplicationListener.java
GestionBaseDeDonnees.java
exemple15.javabeans
Client.java
exemple15.modeles
DAO.java
ModeleClientDAO.java
ModeleDAO.java
log4j.properties
struts.xml
css
styles.css
images
aide.jpg
ajouterclient.jpg
editerclient.jpg
important.jpg
supprimerclient.jpg
jsp
EditerClient.jsp
ListerClient.jsp
WEB-INF
lib
web.xml

Voici les fichiers:


ClientAction.java
Code :
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
package exemple15;
 
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
import exemple15.javabeans.Client;
import exemple15.modeles.ModeleClientDAO;
 
 
@SuppressWarnings("serial")
public class ClientAction extends ActionSupport implements Preparable, ModelDriven{
 
    private Client client;
    private List<Client> listeClients;
    private int idClientEnCours;
 
    public void prepare() throws Exception {
    	ModeleClientDAO modeleClientDAO=new ModeleClientDAO();
    	// en création, créer un nouvel objet vide
    	if(idClientEnCours==0) 
    	{
    		client=new Client();
    	} 
    	// en modification, retourner les infos de l'objet
    	else
    	{
    		client=modeleClientDAO.getClient(idClientEnCours);
    	}
    }
 
    public Object getModel() {
    	return client;
    }
 
	public int getIdClientEnCours() {
		return idClientEnCours;
	}
 
	public void setIdClientEnCours(int idClientEnCours) {
		this.idClientEnCours = idClientEnCours;
	}
 
	public Client getClient() {
		return client;
	}
 
	public void setClient(Client client) {
		this.client = client;
	}
 
	public List<Client> getListeClients() {
		ModeleClientDAO modeleClientDAO=new ModeleClientDAO();
		listeClients=(ArrayList<Client>)modeleClientDAO.getListeClient();
		return listeClients;
	}
 
	public void setListeClients(List<Client> listeClients) {
		this.listeClients = listeClients;
	}
 
	// retourner la liste des clients après récupération
	public String lister() 
	{
		ModeleClientDAO modeleClientDAO=new ModeleClientDAO();
		listeClients=(ArrayList<Client>)modeleClientDAO.getListeClient();
        return SUCCESS;
    }
 
	// ajouter le client dans le modèle
	public String ajouter()
	{	
		ModeleClientDAO modeleClientDAO=new ModeleClientDAO();
		modeleClientDAO.ajouterClient(client);
	    return SUCCESS;
	}
 
	// afficher le formulaire en édition
	public String editer()
	{
		 return SUCCESS;
	}
 
	// modifier un client
	public String modifier()
	{
		ModeleClientDAO modeleClientDAO=new ModeleClientDAO();
		modeleClientDAO.modifierClient(client);
		return SUCCESS;
	}
 
	// supprimer un client à partir du paramètre reçu nommé idClient
	public String supprimer()
	{
		ModeleClientDAO modeleClientDAO=new ModeleClientDAO();
		modeleClientDAO.supprimerClient(idClientEnCours);
		return SUCCESS;
	}
 
 
}

ClientAction-Ajouter_Client-validation.xml
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 
<validators>
    <field name="client.identifiant">
    	<field-validator type="requiredstring">
            <message>Le champ identifiant est obligatoire</message>
        </field-validator>
    	<field-validator type="stringlength">
    		<param name="minLength">4</param>
    		<param name="maxLength">10</param>
            <message>Le champ identifiant doit avoir entre 4 et 10 caracteres</message>
        </field-validator>
    </field>
    <field name="client.motdepasse">
    	<field-validator type="requiredstring">
            <message>Le champ mot de passe est obligatoire</message>
        </field-validator>
    </field>
</validators>

ClientAction-Modifier_Client-validation.xml
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE validators PUBLIC
        "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
 
<validators>
    <field name="client.identifiant">
    	<field-validator type="requiredstring">
            <message>Le champ identifiant est obligatoire</message>
        </field-validator>
    	<field-validator type="stringlength">
    		<param name="minLength">4</param>
    		<param name="maxLength">10</param>
            <message>Le champ identifiant doit avoir entre 4 et 10 caracteres</message>
        </field-validator>
    </field>
    <field name="client.motdepasse">
    	<field-validator type="requiredstring">
            <message>Le champ mot de passe est obligatoire</message>
        </field-validator>
    </field>
</validators>

ApplicationListener.java
Code :
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
package exemple15.boiteoutils;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.sql.DataSource;
 
public class ApplicationListener implements ServletContextListener{
 
	Context context=null;
 
	//fonction appelée lors de la création du lanceur
	public void contextInitialized(ServletContextEvent servletContextEvent) 
	{
		ServletContext servletContext=servletContextEvent.getServletContext();
		String dataSourceJNDI=servletContext.getInitParameter("dataSourceJNDI");
 
		try
		{
			context=new InitialContext();
			DataSource dataSource=(DataSource)context.lookup(dataSourceJNDI);
			if(dataSource==null)
			{
				System.out.println("Il n'y a pas de DataSource pour le projet : exemple15");
			}
			else
			{
				System.out.println("DataSource : exemple15 charge !");
			}
			servletContext.setAttribute("dataSource", dataSource);
		}
		catch(NamingException e)
		{
			throw new RuntimeException();
		}
		finally
		{
			try
			{
				//fermer le context
				if(context!=null)
				{
					context.close();
				}
			}
			catch(Exception e)
			{
				System.out.println("Erreur lors de initCtx !");
			}
		}
	}
 
 
	//fonction appelée lors de la destruction du lanceur
	public void contextDestroyed(ServletContextEvent servletContextEvent)
	{
		try
		{
			//fermer le context
			if(context!=null)
			{
				context.close();
			}
		}
		catch(Exception e)
		{
			System.out.println("Erreur lors de initCtx !");
		}
	}
}

GestionBaseDeDonnees.java
Code :
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
package exemple15.boiteoutils;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class GestionBaseDeDonnees
{
	// Permet de fermer un resultset
	public static void closeResulset(ResultSet resultat)
	{
		if(resultat!=null)
		{
			try
			{
				resultat.close();
			}
 
			catch(Exception e)
			{
				System.out.println("Erreur lors de la fermerture d'une connexion d'un resultset");
			}
		}
	}
 
	// Fermeture d'une requête 
	public static void closeRequest(Statement requete)
	{
		if(requete!=null)
		{
			try
			{
				requete.close();
			}
			catch(Exception e)
			{
				System.out.println("Erreur lors de la fermerture d'une requête");
			}
		}
	}
 
	// Fermeture d'une connexion 
	public static void closeConnection(Connection connexion)
	{
		if(connexion!=null)
		{
			try
			{
				connexion.close();
			}
 
			catch(Exception e)
			{
				System.out.println("Erreur lors de la fermerture d'une connexion");
			}
		}
	}
 
 
}

Client.java
Code :
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 exemple15.javabeans;
 
 
@SuppressWarnings("serial")
public class Client {
 
    private int idClient;
	private String identifiant;
    private String motdepasse;
 
	public Client(){
 
    }
 
	public Client(int idClient,String identifiant, String motdepasse){
    	this.idClient=idClient;
    	this.identifiant=identifiant;
    	this.motdepasse=motdepasse;
    }
 
 
	public int getIdClient() {
		return idClient;
	}
 
	public void setIdClient(int idClient) {
		this.idClient = idClient;
	}
 
	public String getIdentifiant() {
		return identifiant;
	}
 
	public void setIdentifiant(String identifiant) {
		this.identifiant = identifiant;
	}
 
	public String getMotdepasse() {
		return motdepasse;
	}
 
	public void setMotdepasse(String motdepasse) {
		this.motdepasse = motdepasse;
	}
 
 
}

DAO.java
Code :
1
2
3
4
5
6
7
8
9
package exemple15.modeles;
 
import java.sql.Connection;
 
public interface DAO {
 
	// Définition de la méthode à déclarer dans les classes utilisatrices 
	public Connection getConnection();
}

ModeleClientDAO.java
Code :
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
package exemple15.modeles;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import exemple15.boiteoutils.GestionBaseDeDonnees;
import exemple15.javabeans.Client;
 
 
public class ModeleClientDAO extends ModeleDAO{
 
	// Variables
	Connection connexion=null;
	ResultSet resultat=null;
	private static List<Client> listeClients;
 
 
 
    // retourner la liste des clients
	public List<Client> getListeClient()
	{	
		// Variables
		PreparedStatement requete=null;
		Client client=null;
		String requeteString=null;
		listeClients=new ArrayList<Client>();
 
		try
		{			
			// Ouverture d'une connexion
			connexion=super.getConnection();
 
			// requete pour la liste des clients
			requeteString="SELECT * FROM client WHERE 1 ORDER BY idClient";
			requete=connexion.prepareStatement(requeteString);
 
			// Execution de la requête
			resultat=requete.executeQuery();
 
			// On stocke le resultat dans une liste
			if(resultat!=null)
			{
				while(resultat.next())
				{
					// On effectue le mapping des attributs avec les champs de la table SQL
					client=mapperClient(resultat);
 
					// On ajoute l'objet a la liste des clients
					listeClients.add((Client)client);
				}
			}
		}
		catch(Exception e)
		{
			System.out.println("Erreur dans la requete dans la classe ModeleClientDAO fonction getListeClients");
		}
		finally
		{
			try
			{
				// Fermeture de la connexion
				if(resultat!=null)
				{
					GestionBaseDeDonnees.closeResulset(resultat);
				}
				if(requete!=null)
				{
					GestionBaseDeDonnees.closeRequest(requete);
				}
				if(connexion!=null)
				{
					GestionBaseDeDonnees.closeConnection(connexion);
				}
			}
			catch(Exception ex)
			{
				System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe ModeleClientDAO fonction getListeClients");
			}	
		}
 
		// Retourner la liste des clients
		return listeClients;
	}
 
 
 
	// trouver un client dans la base
	public Client getClient(int idClient) 
	{
		// Variables
		PreparedStatement requete=null;
		Client client=null;
		String requeteString=null;
 
		try
		{
			// Ouverture d'une connexion
			connexion=super.getConnection();
 
			// Création de la requête
			requeteString = "SELECT * FROM client WHERE idClient=?";
 
			// On prépare la requête
			requete=connexion.prepareStatement(requeteString);
			requete.setInt(1,idClient);
 
			// Execution de la requête
			resultat=requete.executeQuery();
 
			// On stocke le resultat dans l'objet client
			if(resultat!=null)
			{
				if(resultat.next())
				{
					// On effectue le mapping des attributs avec les champs de la table SQL
					client=mapperClient(resultat);
				}
			}
		}
		catch(Exception e)
		{
			client=null;
			System.out.println("Erreur dans la requete dans la classe ModeleClientDAO fonction getClient");
		}
		finally
		{
			try
			{
				// Fermeture de la connexion
				if(resultat!=null)
				{
					GestionBaseDeDonnees.closeResulset(resultat);
				}
				if(requete!=null)
				{
					GestionBaseDeDonnees.closeRequest(requete);
				}
				if(connexion!=null)
				{
					GestionBaseDeDonnees.closeConnection(connexion);
				}
			}
			catch(Exception ex)
			{
				System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe ModeleClientDAO fonction getClient");
			}	
		}
 
		// Retourner le client
		return client;
	}
 
 
 
	// ajouter un client dans la base
	public int ajouterClient(Client client) 
	{
		// Variables
		PreparedStatement requete=null;
		String requeteString=null;
		int codeErreur=0;
 
		try
		{			
			// Ouverture d'une connexion
			connexion=super.getConnection();
 
			// Création de la requête
			requeteString="INSERT INTO client (identifiant,motdepasse) VALUES(?,?)";
 
			// Préparation de la requête
			requete=connexion.prepareStatement(requeteString);
			requete.setString(1, client.getIdentifiant());
			requete.setString(2, client.getMotdepasse());
 
			// On vide le client par sécurité
			client=null;
 
			// Execution de la requête
			codeErreur=requete.executeUpdate();
		}
		catch(Exception e)
		{
			codeErreur=0;
			System.out.println("Erreur dans la requete dans la classe ModeleClientDAO fonction ajouterClient");
		}
		finally
		{
			try
			{
				// Fermeture de la connexion
				if(resultat!=null)
				{
					GestionBaseDeDonnees.closeResulset(resultat);
				}
				if(requete!=null)
				{
					GestionBaseDeDonnees.closeRequest(requete);
				}
				if(connexion!=null)
				{
					GestionBaseDeDonnees.closeConnection(connexion);
				}
			}
			catch(Exception ex)
			{
				System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe ModeleClientDAO fonction ajouterClient");
			}	
		}
 
		// Retourner le code d'erreur
		return codeErreur;
    }
 
 
 
 
	// supprimer un client dans la base
	public int supprimerClient(int idClient) 
	{
		// Variables
		PreparedStatement requete=null;
		String requeteString=null;
		int codeErreur=0;
 
		try
		{			
			// Ouverture d'une connexion
			connexion=super.getConnection();
 
			// Supprimer le client
			requeteString="DELETE FROM client WHERE idClient=?";
			requete=connexion.prepareStatement(requeteString);
			requete.setInt(1, idClient);
 
			// Execution de la requête
			codeErreur=requete.executeUpdate();
		}
		catch(Exception e)
		{
			codeErreur=0;
			System.out.println("Erreur dans la requete dans la classe ModeleClientDAO fonction supprimerClient");
		}
		finally
		{
			try
			{
				// Fermeture de la connexion
				if(resultat!=null)
				{
					GestionBaseDeDonnees.closeResulset(resultat);
				}
				if(requete!=null)
				{
					GestionBaseDeDonnees.closeRequest(requete);
				}
				if(connexion!=null)
				{
					GestionBaseDeDonnees.closeConnection(connexion);
				}
			}
			catch(Exception ex)
			{
				System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe ModeleClientDAO fonction supprimerClient");
			}	
		}
 
		// Retourner le code d'erreur
		return codeErreur;
	}
 
 
 
 
	// modifier un client dans la base
	public int modifierClient(Client client) 
	{
		// Variables
		PreparedStatement requete=null;
		String requeteString=null;
		int codeErreur=0;
 
		try
		{			
			// Ouverture d'une connexion
			connexion=super.getConnection();
 
			// Création de la requête
			requeteString="UPDATE client set identifiant=?,motdepasse=? WHERE idClient=?";
			requete=connexion.prepareStatement(requeteString);
			requete.setString(1, client.getIdentifiant());
			requete.setString(2, client.getMotdepasse());
			requete.setInt(3, client.getIdClient());
 
			// On vide le client par sécurité
			client=null;
 
			// Execution de la requête
			codeErreur=requete.executeUpdate();
		}
		catch(Exception e)
		{
			System.out.println("Erreur dans la requete dans la classe ModeleClientDAO fonction modifierClient");
		}
		finally
		{
			try
			{
				// Fermeture de la connexion
				if(resultat!=null)
				{
					GestionBaseDeDonnees.closeResulset(resultat);
				}
				if(requete!=null)
				{
					GestionBaseDeDonnees.closeRequest(requete);
				}
				if(connexion!=null)
				{
					GestionBaseDeDonnees.closeConnection(connexion);
				}
			}
			catch(Exception ex)
			{
				System.out.println("Erreur lors de la fermeture de la connexion avec la base de données dans la classe ModeleClientDAO fonction modifierClient");
			}	
		}
 
		// Retourner le code d'erreur
		return codeErreur;
	}
 
 
	// Réaliser la transformation Relationnel vers Objet
    public Client mapperClient(ResultSet resultat)
    {
    	// Variables
    	Client client=new Client();
 
    	try 
    	{	
	    	if (resultat.getString("idClient")==null)
	    	{
	    		client.setIdClient(0);
	    	}
	    	else 
	    	{
	    		client.setIdClient(resultat.getInt("idClient"));		
	    	}
 
	    	if (resultat.getString("identifiant")==null)
	    	{
	    		client.setIdentifiant("");		
	    	}
	    	else 
	    	{
	    		client.setIdentifiant(resultat.getString("identifiant"));	
	    	}
 
	    	if (resultat.getString("motdepasse")==null)
	    	{
	    		client.setMotdepasse("");
	    	}
	    	else 
	    	{
	    		client.setMotdepasse(resultat.getString("motdepasse"));
	    	}		
    	}
        catch (Exception e)
        {
        	//Si il y a une erreur durant le mapping des attributs
	    	client=null;
	    	System.out.println("Erreur lors du mapping des attributs d'un client dans la class ModeleClientDAO, fonction mapperClient");
        }
 
        //On retourne le client
        return client;
    }
 
}

ModeleDAO.java
Code :
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
package exemple15.modeles;
 
import java.sql.Connection;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import javax.sql.DataSource;
import org.apache.struts2.ServletActionContext;
 
 
// Classe de connexion
public class ModeleDAO  implements DAO
{	
	DataSource dataSource=null;
 
	// Récupérer une connexion
	public Connection getConnection() 
	{
		ServletContext servletContext=ServletActionContext.getServletContext();
		if(this.dataSource==null)
		{
			dataSource=(DataSource)servletContext.getAttribute("dataSource");
		}
		Connection connection=null;
		if(dataSource!=null)
		{
			try
			{
				connection=dataSource.getConnection();
			}
			catch(SQLException e)
			{
				System.out.println(e);
			}
		}
 
		// retourner la connexion
		return connection;
	}
 
 
	// Positionner une dataSource
	public void setConnection(DataSource dataSource)
	{
		this.dataSource=dataSource;
	}
}

log4j.properties
Code :
1
2
3
4
5
#définition du niveau et des Appender du rootLogger (ordre : DEBUG - INFO - WARN - ERROR - FATAL)
#log4j.logger.freemarker=OFF
#log4j.logger.com.opensymphony.xwork2=OFF
#log4j.logger.org.apache=INFO
#log4j.rootLogger=DEBUG

struts.xml
Code :
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
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
 
    <package name="exemple15" namespace="/" extends="struts-default">
        <default-action-ref name="Lister_Client" />
 
        <action name="Lister_Client" class="exemple15.ClientAction" method="lister">
            <result>/jsp/ListerClient.jsp</result>
        </action>
 
        <action name="Ajouter_Client" class="exemple15.ClientAction" method="ajouter">
            <result name="input">/jsp/ListerClient.jsp</result>
            <result name="success" type="redirectAction">Lister_Client</result>
        </action>
 
        <action name="Editer_Client" class="exemple15.ClientAction" method="editer">
			<interceptor-ref name="paramsPrepareParamsStack"/>
            <result name="success">/jsp/EditerClient.jsp</result>
        </action>
 
        <action name="Modifier_Client" class="exemple15.ClientAction" method="modifier">
        	<result name="input">/jsp/EditerClient.jsp</result>
            <result name="success" type="redirectAction">Lister_Client</result>
        </action>
 
        <action name="Supprimer_Client" class="exemple15.ClientAction" method="supprimer">
            <result name="success" type="redirectAction">Lister_Client</result>
        </action>
 
    </package>
</struts>

styles.css
Code :
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
* { margin: 0; padding: 0;}
 
html, body {
	margin: 0; 
	text-align: center; 
}
 
#enveloppe 
{
	position: relative; 
	margin-left: 4%;
	margin-top: 2%;
	width: 400px;
	text-align: left; 
	background:#fefefe;
	border-style:solid;
	border-width:1px;
	border-color:#eaeaea;
	padding: 14px;
}
 
.input
{
	width:200px;
	height:18px;
	border:1px solid;
	border-color:#6f6e6e;
	border-width:1px;
	border-color:#A8A6A7;
	color:#686667;
	font-family:tahoma, verdana, arial, sans-serif;
	font-size:11px;
	font-weight: normal;		
 
}
 
.inputerreur
{
	width:200px;
	height:18px;
	border:1px solid;
	border-color:#6f6e6e;
	border-width:1px;
	border-color:#A8A6A7;
	color:#686667;
	font-family:tahoma, verdana, arial, sans-serif;
	font-size:11px;
	font-weight: normal;
	background-color:#F00;	
}
 
.errorMessage
{
	color:#D53A3E;
	font-family:tahoma, verdana, arial, sans-serif;
	font-size:13px;
}
 
#message_erreur
{
	margin-top:16px;
	margin-bottom:0px;
	margin-left:40px;
	padding-bottom:2px;
	padding-top:2px;
	padding-left:20px;
	padding-right:50px;
	text-align:justify;
	border-style:solid;
	border-top-width:1px;
	border-top-color:#D53A3E;
	border-right-width:2px;
	border-right-color:#D53A3E;
	border-bottom-width:2px;
	border-bottom-color:#D53A3E;
	border-left-width:1px;
	border-left-color:#D53A3E;
	width:600px;
}
 
#message_erreur ul
{
	padding-top:0px;
	margin-top:2px;
	padding-bottom:0px;
	padding-right:20px;
	margin-bottom:0px;
	margin-left:8px;
	margin-right:10px;
	color:#D53A3E;
	font-family:tahoma, verdana, arial, sans-serif;
	font-size:13px;
	font-weight:normal;
	list-style-image:url(../images/important.gif);
}
 
#message_erreur label
{
	color:#D53A3E;
	font-family:tahoma, verdana, arial, sans-serif;
	font-size:12px;
	font-weight:bold;
}
 
#tableau
{
	margin-top:20px;
	border-style:solid;
	border-width:1px;
	border-color:#A8A6A7;
	background-color:#E8E8E8;
	color:#686667;
	font-family:tahoma, verdana, arial, sans-serif;
	font-size:11px;
	width:100%;
}
.ligne1
{
	background-color: #CCCBC6;
}
.ligne2
{
	background-color: #F5F4F6;
}

EditerClient.jsp
Code :
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
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Editer un client</title>
<style type="text/css">@import url(css/styles.css);</style>
</head>
<body>
<!-- Message d'erreur -->
<s:if test="errors.size()>0">
<div id="message_erreur">
	<label>Les erreurs suivantes se sont produites : </label>
	<ul><s:fielderror/></ul>
</div>
</s:if>
 
<div id="enveloppe">									
	<h3>Editer un client</h3>
	<s:form method="post" action="Modifier_Client">
		<s:hidden key="client.idClient"/>
		<s:textfield name="client.identifiant" id="client.identifiant" label="Identifiant" labelposition="top" cssClass="input"/>
		<s:textfield name="client.motdepasse" id="client.motdepasse" label="Mot de passe" labelposition="top" cssClass="input"/>
		<s:submit value="Modifier un client"/>
	</s:form>		
</div>
</body>
</html>

ListerClient.jsp
Code :
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
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Liste des clients</title>
<style type="text/css">@import url(css/styles.css);</style>
</head>
<body>
<!-- Message d'erreur -->
<s:if test="errors.size()>0">
<div id="message_erreur">
	<label>Les erreurs suivantes se sont produites : </label>
	<ul><s:fielderror/></ul>
</div>
</s:if>
 
<div id="enveloppe">									
	<h3>Ajouter un client</h3>
	<s:form method="post" action="Ajouter_Client">
		<s:textfield name="client.identifiant" id="client.identifiant" label="Identifiant" labelposition="top" cssClass="input"/>
		<s:textfield name="client.motdepasse" id="client.motdepasse" label="Mot de passe" labelposition="top" cssClass="input"/>
		<s:submit value="Ajouter un client"/>
	</s:form>
 
	<table border="0" id="tableau" cellpadding="0" cellspacing="0">
	<tr><td><b>ID</b></td><td><b>Identifiant</b></td><td><b>Mot de passe</b></td><td colspan="2" align="center"><b>Gestion</b></td></tr>
	<s:iterator value="listeClients" status="ligne">
	<s:if test="#ligne.odd"><tr class="ligne1"></s:if>
	<s:if test="#ligne.even"><tr class="ligne2"></s:if>
    	<td><s:property value="idClient"/></td>
    	<td><s:property value="identifiant"/></td>
    	<td><s:property value="motdepasse"/></td>
    	<td align="center"><a href="Editer_Client.action?idClientEnCours=${idClient}"/><img src="images/editerclient.png" alt="Editer" title="Editer" border="0"/></a></td>
    	<td align="center"><a href="Supprimer_Client.action?idClientEnCours=${idClient}"/><img src="images/supprimerclient.png" alt="Supprimer" title="Supprimer" border="0"/></a></td>
  	</tr>
	</s:iterator>
	</table>	
</div>
</body>
</html>

web.xml
Code :
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
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="exemple15" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
	<!-- Chargeur du datasource -->
    <listener>
        <listener-class>exemple15.boiteoutils.ApplicationListener</listener-class>
    </listener>
 
	<!-- Parametre globaux -->
	<context-param>
        <param-name>dataSourceJNDI</param-name>
        <param-value>java:/comp/env/jdbc_struts2_MySQL</param-value>
    </context-param>
 
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
    <!-- Informations de connexion a la base de donnees -->
	<resource-ref>
		<description>Connexion a la base de donnees MySQL</description>
		<res-ref-name>jdbc_struts2_MySQL</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
 
</web-app>

J'essaye de mettre en place un pool de connexion, le fichier qui sert à la déclaration du pool dans le fichier de configuration du projet
C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost\exemple15.xml

Voici le fichier exemple15.xml:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<Context path="/exemple15" reloadable="true"
docBase="D:\workspace\exemple15">
	<Resource name="jdbc_struts2_MySQL"
		auth="Container"
		type="javax.sql.DataSource"
		username="root"
		password="Esprit27"
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/struts2"
		maxActive="20"
		maxIdle="10"
		validationQuery="SELECT 1"/>
</Context>
J'utilise Eclipse Java EE, Tomcat 7.0, MySQL 5.5 et j'ai installé le pilote approprié (mysql-connector-java-5.1.19-bin.jar) dans le répertoire /WEB-INF/lib de l'application.

Mon application se trouve dans le répertoire D:\workspace\exemple15.
J'ai crée la base de données struts avec la table client et les trois champs dans MySQL.

Voici le message d'erreur qui s'affiche dans la console d'Eclipse en tapant l'url http://localhost:8080/exemple15/, l'appli sinon s'affiche, mais sans les données:
Citation:
Cannot create JDBC driver of class '' for connect URL 'null'
Erreur dans la requete dans la classe ModeleClientDAO fonction getListeClients
De plus je ne connais pas à priori le nom de mon datasource que l'on retrouve à plusieurs endroits dans le projet (dans web.xml pour le <param-value> et le <res-ref-name> et dans exemple15.xml pour le <Resource name, j'ai mis le nom cité dans l'exemple, mais je ne sais pas ce qui le détermine. Dans l'exemple ils mettent: jdbc_struts2_MySQL, cependant je ne sais pas si on peut mettre ce qu'on veut. Quand j'ai installé MySQL5.5, il m'a demandé de rentrer le nom MySQL55 à un moment donné, faut-il que j'utilise ce nom comme Datasource. De plus on utilise un docBase et workDir dans exemple15.xml et je ne sais pas trop quoi mettre sur ces données, si ce n'est pour le premier le répertoire de mon projet.

Je vous remercie par avance de votre aide, car je patine un peu en ce moment.

mumu27
mumu27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2012, 17h44   #3
mumu27
Membre régulier
 
Avatar de mumu27
 
Développeur informatique
Inscription : mars 2009
Messages : 183
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 183
Points : 95
Points : 95
J'ai regardé d'un peu plus près le problème en fait, j'ai un souci avec la tentative d'ouverture de connexion dans la fonction getListeClient() de la classe ModeleClientDAO.java:
Code :
1
2
// Ouverture d'une connexion
connexion=super.getConnection();
En effet la variable connexion renvoie la valeur null.
Pour le Datasource, je n'ai pas de souci je pense.
Voici le message de la console:

Citation:
23 avr. 2012 17:07:44 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre6/bin/client;C:/Program Files (x86)/Java/jre6/bin;C:/Program Files (x86)/Java/jre6/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;D:\eclipse;;.
23 avr. 2012 17:07:44 org.apache.tomcat.util.digester.SetPropertiesRule begin
ATTENTION: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:exemple15' did not find a matching property.
23 avr. 2012 17:07:44 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
23 avr. 2012 17:07:45 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
23 avr. 2012 17:07:45 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1597 ms
23 avr. 2012 17:07:45 org.apache.catalina.core.StandardService startInternal
INFO: Démarrage du service Catalina
23 avr. 2012 17:07:45 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.16
DataSource : exemple15 charge !
log4j:INFO Using URL [file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/exemple15/WEB-INF/classes/log4j.properties] for automatic log4j configuration of repository named [default].
23 avr. 2012 17:07:49 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
23 avr. 2012 17:07:49 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
23 avr. 2012 17:07:49 org.apache.catalina.startup.Catalina start
INFO: Server startup in 3994 ms
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
Erreur dans la requete dans la classe ModeleClientDAO fonction getListeClients:
23 avr. 2012 17:08:05 org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned where no TLDs were found. Skipping JAR scanning can improve startup time and JSP compilation time.
Cannot create JDBC driver of class '' for connect URL 'null'
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
...
Merci d'avance pour votre aide, si quelqu'un a une piste.

mumu27
mumu27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2012, 08h47   #4
mumu27
Membre régulier
 
Avatar de mumu27
 
Développeur informatique
Inscription : mars 2009
Messages : 183
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2009
Messages : 183
Points : 95
Points : 95
J'ai trouvé le problème, en faît il faut éditer le fichier context.xml de tomcat intégré à eclipse.

Ajouter entre les balises Context de début et de fin du fichier le code suivant :

<Resource name="jdbc_struts2_MySQL"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="Esprit27"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/struts2"
maxActive="20"
maxIdle="10"
validationQuery="SELECT 1"/>

Voilà, en espérant que cela aide quelqu'un.
mumu27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 19h08   #5
sousou12
Candidat au titre de Membre du Club
 
Femme
Étudiant
Inscription : mars 2012
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Femme

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : mars 2012
Messages : 54
Points : 14
Points : 14
bonsoir,
j'ai un problème de connexion mysql tomcat axis avec eclipse
svp dite moi quelles sont les étapes à suivre pour réaliser la connexion.
merci d'avance.
sousou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h02.


 
 
 
 
Partenaires

Hébergement Web