Bonjour
Je me suis recemment mis a la programmation java EE.
Je suis un tutorial, et il faut que je crée une toute petite application web formulaire.
Je ne poste pas les vues(page JSP) seulement mon 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
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 istia.st.servlets.personne;
 
import javax.servlet.http.HttpServlet;
import java.util.*;
import javax.servlet.*;
import java.io.IOException;
import javax.servlet.http.*;
 
public class ServletPersonne extends HttpServlet {
 
	ArrayList<String> erreur = new ArrayList<String>(); //initialisation des erreurs qui peuvent arriver
	String URLerreur = null;
	String[] parametre = {"URLformulaire", "URLreponse"}; //on initialise avec me nom du parametre pour pouvoir le recuperer
	Map param = new HashMap<String, String>(); //initialisation d'un dictionnaire
 
	public void init() throws ServletException{
		ServletConfig config = getServletConfig();
		String valeur; //on va stocker la valeur du parametre dedans
		for(int i = 0 ; i < parametre.length ; i++) { //on va maintenant verifier si les parametres ont bien ete rempli
			valeur = config.getInitParameter(parametre[i]);
			if(valeur == null)
				erreur.add("Erreur, le parametre" + parametre[i] + "n'a pas eté rempli"); //si le parametre n'a pas ete rempli, on rempli le gestionnaire d'erreur
			param.put(parametre[i], valeur); //on le stocke dans le dicionnaire
			URLerreur = config.getInitParameter("URLerreur");
			if(URLerreur == null)
				throw new ServletException("le parametre erreur n'a pas ete initialisé");
		}
	}
 
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(erreur.size() != 0) {
			request.setAttribute("erreur", erreur);
			getServletContext().getRequestDispatcher(URLerreur).forward(request, response); //on passe la main a la vue erreur
			return;
		}
		String method = request.getMethod().toLowerCase(); //on recupere la methode get si c'est la premiere fois et post si c'est la seconde
		String action = request.getParameter("action");
 
		if(action == null)  //si le parametre action n'existe pas, c'est que la page n'a pas ete encore lancée, il faut donc la lancer
			action = "init";
 
		if(method.equals("get") && action.equals("init")) { //si la page n'a pas ete encore initialisé on appelle la methode d'initialisation
			doInit(request, response);
		return;
		}
		if(method.equals("post") && action.equals("ValidationFormulaire")) { //si la page a deja ete initialisée on appelle la methode du formulaire
			doValidationFormulaire(request, response);
			return; //les return servent a stopper la methode
		}
			doInit(request, response); //dans tous les autres cas
	}
 
	public void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setAttribute("nom", "");
		request.setAttribute("age", "");
		getServletContext().getRequestDispatcher((String)param.get("URLformulaire")).forward(request, response);
		return;
	}
 
	public void doValidationFormulaire(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String nom = (String)request.getAttribute("txtNom");
		String age = (String) request.getAttribute("txtAge");
		ArrayList<String> erreurForm = new ArrayList<String>();
		nom = nom.trim(); //on supprime les espaces qui peut y avoir
		if(nom == null)
			erreurForm.add("le champ [nom] n'a pas ete rempli");
		if(!age.matches("^\\s*\\d+\\s*$")) 
			erreurForm.add("le champ [age] n'a pas ete rempli ou est erroné");
 
			if(erreurForm.size() != 0) {
				request.setAttribute("erreur", erreurForm);
				getServletContext().getRequestDispatcher(URLerreur).forward(request, response);
				return;
			}
			request.setAttribute("nom", nom);
			request.setAttribute("age", age);
			getServletContext().getRequestDispatcher((String) param.get("URLreponse")).forward(request, response);
			return;
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
 
}
 
 
 
Je lance sur mon navigateur localhost:8080/pe
Je lance sur mon navigateur localhost:8080/personne01/main
Jusque la tout va bien, quoi que a la place d'avoir des champs vide pour nom et age c'est marqué "type".
Je rentre un nom et un age, et la, page d'erreur: etat-HTTP 500
et message d'erreur:

java.lang.NullPointerException
istia.st.servlets.personne.ServletPersonne.doValidationFormulaire(ServletPersonne.java:64)
istia.st.servlets.personne.ServletPersonne.doGet(ServletPersonne.java:47)
istia.st.servlets.personne.ServletPersonne.doPost(ServletPersonne.java:82)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Quelqu'un sait il d'ou vient le probleme?

Merci d'avance