Bonjour à tous je suis un grand débutant, j'ai une applet a faire dans le thème d'un cour car étant étudiant, j'ai donc une applet qui doit chercher un nom dans ma base de donnée avec wampserver, quand je lance l'applet cela me m'est une erreur java.lang.NullPointerException je ne comprends pas voici le code de l'applet:

Code java : 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
package client;
 
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Vector;
 
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
 
import SResultSet.SerializedResultSet;
 
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
 
public class AppletRecherche extends JApplet {
	private JTextField txtAaa;
	private JList listeResultat;
	/**
         * Create the applet.
         */
	public AppletRecherche() {
		getContentPane().setLayout(null);
 
		JLabel lblNewLabel = new JLabel("Nom de la personne rechercher");
		lblNewLabel.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent arg0) {
			}
		});
		lblNewLabel.setBounds(0, 3, 225, 300);
		lblNewLabel.setVerticalAlignment(SwingConstants.TOP);
		getContentPane().add(lblNewLabel);
 
		txtAaa = new JTextField();
		txtAaa.setBounds(225, 0, 225, 20);
		getContentPane().add(txtAaa);
		txtAaa.setColumns(10);
		JButton button = new JButton("Rechercher");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Rechercher();
 
			}
		});
		button.setBounds(120, 31, 116, 29);
		getContentPane().add(button);
 
		JList listeResultat = new JList();
		listeResultat.setBounds(0, 85, 450, 215);
		getContentPane().add(listeResultat);
 
	}
 
	private void Rechercher() {
 
		String res;
		String nom=txtAaa.getText();
		try
		{	
			// Connexion à la servlet
			URL url=new URL("http://localhost:8080/ProjetServlet/requete");
			URLConnection connexion=url.openConnection();
			connexion.setDoOutput(true);
			// Récupération du flux de sortie
			ObjectOutputStream fluxsortie = new ObjectOutputStream(connexion.getOutputStream());
			// Envoi du nom à rechercher
			fluxsortie.writeObject(nom);
			// Récupération du flux d’entrée
			ObjectInputStream fluxentree = new ObjectInputStream(connexion.getInputStream());
			// Récupération du résultat de la requête
			SerializedResultSet donnees=(SerializedResultSet) fluxentree.readObject();
			// affichage du résultat
			donnees.first();
			Vector contenu=new Vector();
			contenu.clear();
			listeResultat.setListData(contenu); // erreur d'après le débogueur
			for (int i=0; i<donnees.recordCount();i++)
			{
				res=donnees.getString("nom")+" "+donnees.getString("prenom");
				contenu.addElement(res);
				donnees.next();
			}
			if (donnees.recordCount()==0) 
				{
				res="Pas de personne correspondante";
				contenu.addElement(res);
				}
			listeResultat.setListData(contenu);	
 
		}
		catch (Exception sql)
		{
			System.out.println("erreur "+sql);
		}
 
	} 
}

voici celui de ma servlet:

Code java : 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
package MesServlets;
 
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
 
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
 
import SResultSet.SerializedResultSet;
 
public class ServletRequete extends HttpServlet {
	private DataSource ds;
	Connection BD;
	String nomPersonne;
	SerializedResultSet sresultat;
	protected void doPost(HttpServletRequest request, HttpServletResponse response) 
											throws ServletException, IOException {
		try {
			// Récupération du flux d'entrée envoyé par l'applet
			ObjectInputStream entree=new ObjectInputStream(request.getInputStream());
			nomPersonne=(String)entree.readObject();
			// Préparation du flux de sortie
			ObjectOutputStream sortie=new ObjectOutputStream(response.getOutputStream());
			// Execution de la requête
			sresultat=ExecuterRequete();
			sresultat.first();
			// Envoi du résultat au client
			sortie.writeObject(sresultat);
		} catch (Exception ex) {
		System.out.println("Erreur d'exécution de la requête SQL*: "+ex);
		}
	}
 
	public SerializedResultSet ExecuterRequete()
	{
		try
		{ 
			// Exécution de la requête
			BD=ds.getConnection();
			Statement s = BD.createStatement();
			ResultSet r = s.executeQuery("select * from personne where nom= '"+nomPersonne+"'");
			// Transformation du ResultSet en sResultSet
			java.sql.ResultSetMetaData columnNames = r.getMetaData();
			SResultSet.SerializedResultSet sResultSet = new SResultSet.SerializedResultSet();
		for (int i = 1; i <= columnNames.getColumnCount(); i++) {
			sResultSet.addColumn(columnNames.getColumnName(i), i);
			}
			while (r.next()) {
				for (int column = 1; column <= columnNames.getColumnCount(); column++) {
				sResultSet.addColumnData(column, r.getObject(column));
				}
			}
 
			r.close();
			s.close();
			BD.close();
			s = null;
			r = null;
			return sResultSet;
		}
		catch (java.sql.SQLException ex) {
				System.out.println("Erreur d'exécution de la requête SQL \n"+ex);
				return null;
		}
	}
 
	public void init() throws ServletException {
		try {
			Context initCtx = new InitialContext();
			System.out.println("lookup de env");
			Context envCtx = (Context) initCtx.lookup("java:comp/env");
			System.out.println("lookup de base_test");
			ds=(DataSource) envCtx.lookup("base_test");
 
		}
		catch(Exception er) {
			System.out.println("Erreur de chargement du contexte " + er);
		}
	}
}

voici mon fichier web.xml au cas ou:

Code xml : 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
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>Mes servlets</display-name>
    <description>
      Premi�res servlets
    </description>
	<servlet>
	<servlet-name>ServletBD</servlet-name> 
	<servlet-class>MesServlets.ServletRequete</servlet-class> 
	<description>Servlet d'essai de la connection BD</description> 
    </servlet>
<servlet-mapping> 
	<servlet-name>ServletBD</servlet-name>
	<url-pattern>/requete</url-pattern> 
</servlet-mapping>
</web-app>

et voici l'arborescence de mon projet :

Nom : Capture.PNG
Affichages : 356
Taille : 11,1 Ko
mon erreur se lance quand je clique sur le bouton chercher l'erreur viendrait d'après le débogueur de la fonction rechercher
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
listeResultat.setListData(contenu);
je viens juste de commencer si vous pouviez m'aidez s'il vous plaît,si vous avez besoin d'info ou de fichier supplémentaire n'hésiter pas cordialement.