Bonjour, je suis nouveau dans le J2EE ( en fait je connais beaeucoup de théorie dessu mais loin derrière en pratique, ) voici je fais actuellement un tuto ( formulaire ) et suis bloqué sur la ( une simple en plus ) servlet depui 2 jours , puisque j'ai fait le test des JSP ( vues) elles marches.
j'obtiens l'erreur 404 en voulant accecder à ma page principale :http://localhost:8080/firsttest2/main


le code du formulaire2.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
 
 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
 
<%
// on récupère les données du modèle
	String nom=(String)request.getAttribute("nom");
 	String age=(String)request.getAttribute("age");
 	String urlAction=(String)request.getAttribute("urlAction");
%>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	 <title>Personne - formulaire2</title>
	</head>
<body>
 	<center>
 		<h2>Personne - formulaire2</h2>
 		<hr>
		<form  method="post">
 			<table>
 				<tr>
 					<td>Nom</td>
 					<td><input name="txtNom" value="<%= nom %>" type="text" size="20"></td>
 				</tr>
 				<tr>
					<td>Age</td>
 					<td><input name="txtAge" value="<%= age %>" type="text" size="3"></td>
				</tr>
			</table>
			<table>
 				<tr>
					 <td><input type="submit" value="Envoyer"></td>
					 <td><input type="reset" value="Rétablir"></td>
 
					 <td><input type="button" value="Effacer"></td>
 
 				</tr>
 
 			</table>
				Les bases du développement web MVC en Java, par l'exemple 56/264
				<input type="hidden" name="action" value="validationFormulaire">
		</form>
 	</center>
 </body>
 </html>

le web.xml


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
 
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>firsttest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>firstserv2</display-name>
    <servlet-name>firstserv2</servlet-name>
    <servlet-class>mypack.firstserv2</servlet-class>
    <init-param>
		<param-name>urlReponse</param-name>
		<param-value>
		 	/WEB-INF/response.jsp
		 </param-value>
	 </init-param>
 
	 <init-param>
	<param-name>urlErreurs</param-name>
		 <param-value>
		 /WEB-INF/erreur.jsp
		</param-value>
	</init-param>
 
	<init-param>
	<param-name>urlFormulaire</param-name>
	<param-value>
			/WEB-INF/formulaire2.jsp
	</param-value>
	</init-param>
 
	<init-param>
		<param-name>urlControleur</param-name>
 		<param-value>main</param-value>
	</init-param>
 
	<init-param>
		 <param-name>lienRetourFormulaire</param-name>
		 <param-value> Retour au formulaire </param-value>
 	</init-param>
    <init-param>
      <param-name>defaultPrenom</param-name>
      <param-value>inconnu</param-value>
    </init-param>
    <init-param>
      <param-name>defaultAge</param-name>
      <param-value>XXX</param-value>
    </init-param>
  </servlet>
 
 
    <servlet>
    <description></description>
    <display-name>firstserv</display-name>
    <servlet-name>firstserv</servlet-name>
    <servlet-class>mypack.firstserv</servlet-class>
    <init-param>
      <param-name>defaultNom</param-name>
      <param-value>inconnu</param-value>
    </init-param>
    <init-param>
      <param-name>defaultPrenom</param-name>
      <param-value>inconnu</param-value>
    </init-param>
    <init-param>
      <param-name>defaultAge</param-name>
      <param-value>XXX</param-value>
    </init-param>
  </servlet>
 
 
  <servlet-mapping>
    <servlet-name>firstserv</servlet-name>
    <url-pattern>/firstserv</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
    <servlet-name>firstserv2</servlet-name>
    <url-pattern>/main</url-pattern>
  </servlet-mapping>
 
  <welcome-file-list>
 <welcome-file>index.html</welcome-file>
 </welcome-file-list>   
 
</web-app>
le code de ma servlet firstserv2

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
 
    package mypack;
	import javax.servlet.ServletException;
	import javax.servlet.http.HttpServlet;
	import javax.servlet.http.HttpServletRequest;
	import javax.servlet.http.HttpServletResponse;
	import javax.servlet.ServletConfig;
	import java.io.IOException;
	import java.util.ArrayList;
	import java.util.HashMap;
import java.util.Map;
 
 @SuppressWarnings("serial")
 public class firstserv2 extends HttpServlet {
 
	 private String urlErreurs = null;
	 private ArrayList erreursInitialisation = new ArrayList<String>();
	 private String[] paramètres={"urlFormulaire","urlReponse"};
	 private Map params=new HashMap<String,String>();
 
	 // init
 
	 public void init() throws ServletException {
 
			 // on récupère les paramètres d'initialisation de la servlet
			 ServletConfig config = getServletConfig();
			 // on traite les autres paramètres d'initialisation
			  String valeur=null;
			  for(int i=0;i<paramètres.length;i++){
			 // valeur du paramètre
			 valeur=config.getInitParameter(paramètres[i]);
			 // paramètre présent ?
				 if(valeur==null){
				 // on note l'erreur
				 erreursInitialisation.add("Le paramètre ["+paramètres[i]+"] n'a pas été initialisé");
				 }
				 else{
				  // on mémorise la valeur du paramètre
				  params.put(paramètres[i],valeur);
				 }
				 // l'url de la vue [erreurs] a un traitement particulier
				 urlErreurs = config.getInitParameter("urlErreurs");
				 if (urlErreurs == null)
				 throw new ServletException(
				  "Le paramètre [urlErreurs] n'a pas été initialisé");
 
				  }
 
	}
 
 
	 public void doGet(HttpServletRequest request, HttpServletResponse response)
	 throws IOException, ServletException {
 
 
		  // on vérifie comment s'est passée l'initialisation de la servlet
		  if (erreursInitialisation.size() != 0) {
		 // on passe la main à la page d'erreurs
		 request.setAttribute("erreurs", erreursInitialisation);
		 getServletContext().getRequestDispatcher(urlErreurs).forward(
		 request, response);
		 // fin
		 return;
		  }
 
		  // on récupère la méthode d'envoi de la requête
		 String méthode=request.getMethod().toLowerCase();
		 // on récupère l'action à exécuter
		 String action=request.getParameter("action");
		  // action ?
		 if(action==null){
		 action="init";
		 }
		 // exécution action
 
		 if(méthode.equals("get") && action.equals("init")){
		// démarrage application
		 doInit(request,response);
		 return;
		}
		 if(méthode.equals("post") && action.equals("validationFormulaire")){
		 // validation du formulaire de saisie
		 doValidationFormulaire(request,response);
		 return;
		}
			// autres cas
			 doInit(request,response);
			  }
 
 
 
 
	 // affichage vue initiale
	 void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException,
	IOException{
 
		 // on envoie le formulaire vide
		  request.setAttribute("nom", "");
		  request.setAttribute("age", "");
		  getServletContext().getRequestDispatcher((String)params.get("urlFormulaire")).forward(
		  request, response);
		  return;
	 }
 
	 // validation du formulaire
	 void doValidationFormulaire(HttpServletRequest request,
	 HttpServletResponse response) throws ServletException, IOException{
 
		 // on récupère les paramètres
		  String nom = request.getParameter("txtNom");
		 String age = request.getParameter("txtAge");
		 // vérification des paramètres
		 ArrayList<String> erreursAppel = new ArrayList<String>();
		 // le nom doit être non vide
		 nom = nom.trim();
		 if (nom.equals(""))
		  erreursAppel.add("Le champ [nom] n'a pas été rempli");
		// l'âge doit être un entier >=0
		if (!age.matches("^\\s*\\d+\\s*$"))
		 erreursAppel.add("Le champ [age] est erroné");
		 // des erreurs dans les paramètres ?
		 if (erreursAppel.size() != 0) {
		 // on envoie la page d'erreurs
		  request.setAttribute("erreurs", erreursAppel);
		  getServletContext().getRequestDispatcher(urlErreurs).forward(request, response);
		  return;
		  }
		  // les paramètres sont corrects - on envoie la page réponse
		  request.setAttribute("nom", nom);
		  request.setAttribute("age", age);
		  getServletContext().getRequestDispatcher((String)params.get("urlReponse")).forward(request,
		 response);
		  return;
		 }
 
 
	 // post
	 public void doPost(HttpServletRequest request, HttpServletResponse response)
	 throws IOException, ServletException {
	 // on passe la main au GET
	 doGet(request, response);
	 }
 }
quel est donc l'erreur car en testant la vue formulaire seule elle marche , merci pour votre aide

cordialement,