Aller au menu - Aller au contenu

Icône Utiliser des formulaires

Mise à jour : 24/07/2009
Difficulté : Facile Facile Creative Commons BY-NC-SA
10 160 visites depuis 7 jours, dont 722 sur ce chapitre classé 25/786
Nous avons réussi à utiliser les trois composantes de la plateforme JEE :
  • Modèle : objets Java ;
  • Vue : pages JSP ;
  • Contrôleur : nos servlets.


Il reste encore un point à aborder avant de clore cette partie sur les notions de base : les formulaires !
Nous allons donc voir comment ceux-ci sont utilisés et comment récupérer des informations saisies dans l'un d'eux.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Rappel

Je pense qu'un petit rappel s'impose, tout du moins sur le fonctionnement de ces chers formulaires !
Tout d'abord, dans des formulaires web, vous pouvez trouver plusieurs sortes de champs.
  • Des champs de texte :
    <input type="text" name="nom" />
  • Des boutons (de type button ou submit) :
    <input type="button" name="nom" value="Valider" />
  • Des champs cachés :
    <input type="hidden" name="nom" value="je suis caché..." />
  • Des champs de mot de passe :
    <input type="password" name="nom" value="je suis caché..." />
  • Des cases à cocher :
    <input type="checkbox" name="nom" value="OUI" /> <input type="checkbox" name="nom2" value="NON" />
  • Des boutons radio :
    <input type="radio" name="nom" value="OUI" /> <input type="radio" name="nom" value="NON" />
  • Des liste simples ou multiples :
    <select name="nom"> <option value="1">Choisissez</option> </select>
  • Des zones de texte :
    <textarea name="nom"> Du texte </textarea>


Tous ces champs sont porteurs d'informations qui sont transmises vers une page web via un formulaire.
Un formulaire, en HTML, c'est tout simplement ceci :
Code : HTML
1
2
3
<form name="formulaire" action="/traitement" method="post">
<!-- Différents champs de formulaires -->
</form>


Ici, nous avons un formulaire :
  • qui s'appelle "formulaire" ;
  • qui envoie les données des champs vers la page "/traitement" ;
  • et qui envoie ces informations via une requête de type "post".


À quoi sert tout ceci ?

Le nom du formulaire sert surtout en Javascript lorsque vous voulez vérifier les données de celui-ci...
Les autres servent pour la communication avec le serveur :
  • l'attribut action permet au navigateur de savoir vers quelle page envoyer les données ;
  • l'attribut method, lui, permet de savoir comment on envoie les données.


Nous aborderons l'attribut action dans la sous-partie suivante ; pour le moment, nous allons nous atteler à l'attribut method.
Vous savez déjà que, par défaut, les informations entre pages web sont communiquées en GET ; eh bien, pour les formulaires, c'est pareil : par défaut, les informations envoyées via un formulaire sont envoyés en GET !

J'ai fait un formulaire :

Image utilisateur


Son code source est le suivant :

Code : JSP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

	<form name="firstForm" action="firstFormAction.do" 
style="width:50%;margin:auto;background-color:#c1d9fc;padding-bottom:15px;">
				
		<h2 style="text-align:center;color:white;background-color:#6683b1;">Formulaire HTML</h2>
		<p style="text-align:center;">Nom : <input type="text" name="nom" /></p>
		<p style="text-align:center;">Prénom : <input type="text" name="prenom" /></p>
			
		<p style="text-align:center;width:50%;margin:auto;"><input type="submit" name="Valider" value="Valider"/></p>
		
	</form>

</body>
</html>


La page qui reçoit les informations ressemble à ça :

Image utilisateur


Nous verrons le code source de la page recevant les informations très bientôt... En fait, dans le sous-chapitre qui suit... Mais, pour le moment, le sujet n'est pas là ! :)

Ce formulaire n'a pas de méthode de transit d'informations déclarée, donc, les données passent en GET et en voici la preuve :

Image utilisateur


Et voici les en-têtes HTTP correspondantes à la requête envoyée :

Image utilisateur


Vous pouvez clairement voir que les données sont directement visibles dans l'URL du navigateur ainsi que dans l'URL de la requête HTTP...
Par contre, voici ce que j'ai obtenu avec le même formulaire ayant l'attribut method clairement renseigné avec post :

Image utilisateur

Image utilisateur


Les données ont bien transité mais elles n'apparaissent plus dans l'URL du navigateur ni dans l'URL de la requête HTTP !

Ceci est la principale différence entre les requêtes HTTP de type GET et celles de type POST, mais il en existe deux autres.
La taille maximale d'une URL est d'environ 2 000 caractères ! Alors qu'elle est quasiment illimitée avec une requête de type POST !
Par contre, avec une requête de type POST, lorsque vous êtes sur la page ayant reçue les informations, si vous rechargez la dite page avec F5 ou CTRL + F5, le navigateur vous demandera si vous souhaitez renvoyer les données ! Ceci peut engendrer des erreurs de taille : dupliquer des données par exemple...

Donc, pour simplifier, si votre formulaire est destiné à faire de l'affichage, vous pouvez utiliser des requêtes de type GET.
Par contre, si votre formulaire est utilisé afin de renseigner des champs vitaux pour l'application, mieux vaut utiliser les requêtes de type POST : les utilisateurs ne voient pas le nom de vos champs, ni la valeur de ceux-ci et, en plus, la taille est quasiment illimitée. Mais faites attention à la réexpédition des données !

Et pour l'attribut "action" ? Il a aussi une valeur par défaut ?

Oui ! Par défaut, si vous ne renseignez pas cet attribut, les données de cette page seront envoyées à elle-même ! ;)

Les sources de notre formulaire

Les Zéros les plus hardis auront déjà deviné que j'ai utilisé le couple servlet - JSP pour afficher le formulaire et pour afficher les données de celui-ci.

Voici les codes source de mon couple d'affichage de formulaires :

Secret (cliquez pour afficher)

forms.jsp



Code : JSP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

	<form name="firstForm" action="firstFormAction.do" method="post" style="width:50%;margin:auto;background-color:#c1d9fc;padding-bottom:15px;">
				
		<h2 style="text-align:center;color:white;background-color:#6683b1;">Formulaire HTML</h2>
		<p style="text-align:center;">Nom : <input type="text" name="nom" /></p>
		<p style="text-align:center;">Prenom : <input type="text" name="prenom" /></p>
			
		<p style="text-align:center;width:50%;margin:auto;"><input type="submit" name="Valider" /></p>
		
	</form>

</body>
</html>


Formulaire1.java



Code : Java
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
package com.servlet.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Formulaire1 extends HttpServlet {

	public void doGet(	HttpServletRequest request, 
						HttpServletResponse response)
						throws IOException, ServletException{
		
		request.getRequestDispatcher("forms.jsp").forward(request, response);		
	}
	
}




Et le code source des pages d'affichage des données de formulaire :

Secret (cliquez pour afficher)

formResult.jsp



Code : JSP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

	<div style="width:50%;margin:auto;text-align:center;">
		<p>Vous avez saisi : </p>
		<ul>
			<li>Nom : <%=request.getParameter("nom").toUpperCase() %></li>
			<li>Prénom : <%=request.getParameter("prenom").toUpperCase() %></li>
		</ul>
		
		<p>Pour retourner au formulaire, c'est <a href="form">par ici</a></p>
	</div>

</body>
</html>


FormulaireAction .java



Code : Java
 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
package com.servlet.test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FormulaireAction extends HttpServlet {

	public void doGet(	HttpServletRequest request, 
				HttpServletResponse response)
				throws IOException, ServletException{
	
		request.getRequestDispatcher("formResult.jsp").forward(request, response);		
	}
	
	public void doPost(	HttpServletRequest request, 
			HttpServletResponse response)
			throws IOException, ServletException{

		doGet(request, response);		
	}
	
}


web.xml



Code : XML
 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
<web-app>

	...
	
	<servlet>
		<servlet-class>com.servlet.test.Formulaire1</servlet-class>
		<servlet-name>FirstForm</servlet-name>
	</servlet>
	
	<servlet>
		<servlet-class>com.servlet.test.FormulaireAction</servlet-class>
		<servlet-name>FormAction</servlet-name>
	</servlet>
	
	
	
	...

	<servlet-mapping>
		<servlet-name>FirstForm</servlet-name>
		<url-pattern>/form</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>FormAction</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>



Bon, vous avez vu que je n'ai fait que de l'affichage, aucun contrôle dans nos servlets, juste une délégation de l'affichage : donc, vous savez faire.

Euh, attends une seconde, c'est quoi ça : <form name="firstForm" action="firstFormAction.do"...> ?
Qu'est-ce que c'est que cette extension de fichier ?

Je vois que vous avez un oeil de lynx... Moi qui voulait éluder la question ! :-°
Vous avez donc aussi remarqué ceci :
Code : XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<servlet>
		<servlet-class>com.servlet.test.FormulaireAction</servlet-class>
		<servlet-name>FormAction</servlet-name>
	</servlet>
	
	...

	<servlet-mapping>
		<servlet-name>FormAction</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
</web-app>


En fait, ce genre de nom fait aussi partie de la convention de nommage JEE.
On appelle ce genre de noms des noms logiques.
Comme la plupart des liens que vous trouverez dans les codes source de vos JSP, ce sont des noms totalement fictifs. Ils sont mappés au même titre que les autres type de liens, dans le fichier web.xml !
La convention Java nous dit que pour les pages web faisant des traitements, il est préférable d'utiliser des noms portant l'extension ".do" : comme ça, un développeur passant par là saura de suite qu'il s'agit d'une page de traitement !
Ensuite, vous avez sans doute remarqué que le mappage dans le fichier web.xml était un peu particulier pour le nom logique. C'est juste que là, le mappage dit que la servlet ayant pour nom "FormAction" est chargée de traiter TOUTES les requêtes ayant un nom se terminant par ".do"

Sinon, rien de sorcier, mis à part le fait que les données que le serveur reçoit sont dans l'objet HttpServletRequest.
Ce que j'ai fait aussi. Dans la servlet qui se charge de récupérer les données du formulaire, j'ai redéfini deux méthodes :
  • doGet(HttpServletRequest request, HttpServletResponse response) ;
  • doPost(HttpServletRequest request, HttpServletResponse response).


La méthode doGet() est définie pour déléguer l'affichage à une JSP et la méthode doPost() invoque la méthode doGet() . Comme ça, la boucle est bouclée... :p

Ensuite, dans notre page JSP, nous affichons les données reçues grâce à l'objet request (objet faisant partie des objets n'ayant pas besoin d'import dans les JSP... Idem pour response)...
Nous utilisons la méthode <p>Nom : <%= request.getParameter("nom")%></p> afin de récupérer la donnée.

Rajoutons des champs

Ce que je vous propose de voir maintenant, c'est ce que nous retournent les différents types de champs de formulaire HTML.
Pour ce faire, nous allons étoffer un peu notre formulaire. Voici le nouveau code source du formulaire de tout à l'heure :

Code : JSP
 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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

	<form name="firstForm" action="firstFormAction.do" method="post" 
             style="width:50%;margin:auto;background-color:#c1d9fc;padding-bottom:15px;">
		
		<div style="text-align:center;">		
			<h2 style="color:white;background-color:#6683b1;">Formulaire HTML</h2>
			<p>Nom : <input type="text" name="nom" /></p>
			<p>Prenom : <input type="text" name="prenom" /></p>
			<p>Sexe : <input type="radio" name="sexe" value="Masculin" />Masculin 
                                  <input type="radio" name="sexe" value="Féminin" />Féminin</p>
			<p>Couleur de vos yeux : 
				<select name="yeux">
					<option value="Bleu">Bleu</option>
					<option value="Marron">Marron</option>
					<option value="Vert">Vert</option>
				</select>
			</p>
			<p>Vous programmez en :<br >
				<input type="checkbox" name="C" />En C
				<input type="checkbox" name="C++" />En C++
				<input type="checkbox" name="Java" />En Java
				<input type="checkbox" name=".NET" />En .NET
				<input type="checkbox" name="PHP" />En PHP
			</p>
			<p style="width:50%;margin:auto;"><input type="submit" name="Valider" value="Valider"/></p>
		</div>
	</form>

</body>
</html>


Nous allons également modifier l'affichage des données. Pour ne pas trop alourdir le tout, nous nous contenterons d'afficher les données du formulaire via notre servlet :

Code : Java
 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
package com.servlet.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FormulaireAction extends HttpServlet {

	public void doGet(	HttpServletRequest request, 
				HttpServletResponse response)
				throws IOException, ServletException{
	
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		
                //On récupère la liste des noms de paramètres
		Enumeration<String> e = request.getParameterNames();
		List<String> prog = new ArrayList<String>();
		
                //On parcours cette liste
		while(e.hasMoreElements()){
			String key = e.nextElement();
			
                        //On vérifie les valeurs des checkbox : 'on' signifie que la checkbox est cochée
			if(request.getParameter(key).equals("on")){
				prog.add(key);
			}
			else{
				out.println("<p><strong>" + key + " : </strong>" + request.getParameter(key) + "</p>");
			}
		}

                //Si nous avons au moins un langage de programmation
		if(prog.size() > 0)
			out.println("<p><strong>Je programme en : </strong>");
		
		out.println("<ul>");
		
		for(String str : prog)
			out.println("<li>" + str + "</li>");
		
		out.println("</ul>");
		
		//On n'utilise plus notre JSP...
		//request.getRequestDispatcher("formResult.jsp").forward(request, response);		
	}
	
	public void doPost(	HttpServletRequest request, 
			HttpServletResponse response)
			throws IOException, ServletException{
                //Nous invoquons la méthode doGet avec les paramètres reçu par la méthode doPost
		doGet(request, response);		
	}	
}


Et le résultat, sous vos yeux ébahis :

Image utilisateur


Alors, vous avez vu que nous pouvions récupérer les champs de nos formulaires dans nos servlets ainsi que dans nos JSP via l'objet HttpServletRequest.
Vous aurez sans doute remarqué que tous les champs ne retournent pas leurs valeurs...
Par exemple, les champs de type texte, les radio, les listes et les bouton retournent leurs valeurs ; par contre, les cases à cocher ne retournent rien si elles ne sont pas cochées et "on" dans le cas contraire !

On a cru remarquer que tu as utilisé des liens HTML dans tes JSP.
Ils ne sont pas un peu bizarres ?

Vous avez réussi à voir ça ? Vous êtes en forme, aujourd'hui ! ^^
En effet, je me doutais que ceci allait piquer votre curiosité...
J'ai bel et bien un lien sur ma page qui a l'air de pointer vers un endroit non mappé dans mon fichier web.xml !

Celui-ci : <a href="form">par ici</a> qui serait bien lié à cela : <url-pattern>/form</url-pattern> , mais un truc cloche !
Nous allons voir ça tout de suite...

Tout est lié

En fait, dites-vous bien qu'il y a deux endroits distincts pour accéder à des pages de notre application :
  • depuis le serveur ;
  • depuis votre navigateur.


La différence entre ces deux acteurs est la suivante : ils n'interprètent pas les liens commençant par un "/" de la même manière !

Pour le serveur, lorsque vous êtes dans une application, le "/" signifie la racine de l'application tandis que pour le navigateur, cela signifie la racine du serveur !

Image utilisateur


Donc, pour faire un lien HTML pour faire en sorte que notre application puisse utiliser le mappage <url-pattern>/form</url-pattern> nous pouvons faire :
  • soit ça : <a href="form">par ici</a> aussi appelé chemin relatif (car relatif à l'application) ;
  • soit ça :<a href="/Test/form">par ici</a> aussi appelé chemin absolu (car relatif au serveur).


Il va de soit que "Test" est le nom de mon dossier contenant mon application.


Lequel utiliser alors ?

Réfléchissez et regardez comment on utilise nos liens depuis le début pour accéder à nos pages.
Que sert à faire le fichier web.xml ?
Rappelez-vous que, moins les utilisateurs en savent sur votre application, plus elle sera sûre !
Nous devrions donc préférer les liens relatifs ?

Tout à fait !

Je crois que vous en avez assez vu pour le moment...

Bon, ne me dites pas que ce chapitre était compliqué, je ne vous croirais pas...
Donc, tout ceux qui n'ont pas 100 % au QCM, je les flagelle ! :diable:

Q.C.M.

Par quelle balise un formulaire HTML est-il introduit ?
À quoi sert l'attribut "action" de la balise de formulaire ?
Que fait la valeur par défaut de l'attribut "action" ?
Par défaut, quelle est la méthode de transit des données de formulaire ?
Avec quel objet java récupère-t-on les données de notre formulaire ?
Vers où pointe ce lien HTML <a href="/Test/folder">lien</a> ?

Statistiques de réponses au QCM

Chapitre très simple, en tous cas, pour ceux qui connaissaient déjà le fonctionnement des formulaires web.
Nous avons maintenant fait le tour des notions de base nécessaires au bon déroulement du tuto.

Cette partie est donc terminée, mais avant de réellement clore cette dernière, un TP vous attend ! :pirate:
Chapitre précédent Sommaire Chapitre suivant

Partager

14 commentaires pour "Utiliser des formulaires"
Note moyenne : 3.17 / 4 (294 votes)
Pseudo Commentaire
Hors ligne Micodeur # Posté le 09/11/2010 à 13:05:50

Avec un poil de sémantique, ce ne serait pas mieux?

On est sur le sdz, tout de même... ^^
Hors ligne Espritlune # Posté le 13/11/2010 à 14:06:37

Hello à tous.

Je ne comprends pas pourquoi on redirige le doPost() vers le doGet(). En quoi cela gênerai t il de faire le traitement directement dans le doPost()? Mis à par pour boucler la boucle? ;)

Si par exemple j'ai le formulaire1 qui demande un login et un pass qui renvois sur actionform1.do = ActionFormulaire1.java
La vérification se passe bien.
Comment faire pour qu'ActionFormulaire1 passe la main? Par exemple à une page Accueil où se trouvera une partie formulaire (livre d'or) et une autre informations dynamiques? Et ce sans que se soit une URL vu qu'il ne faut pas sauter la première étape?

Encore Merci pour ce super Tuto!
Ce site permet de vraiment de prendre un peu de hauteur avant de traverser la jungle du développement.
Hors ligne luckysky # Posté le 08/05/2011 à 11:38:35

Avis : Bon

Je suis assez déçu concernant ce tuto comparé à d'autres (cf. PHP+MySQL...), si j'ai choisi le site du zéro, c'est pour avoir le détail de chaque étape. Ici, on est complètement noyé sans aucun repère. A mon avis, un très grand nombre de personnes a dû abandonner... parce qu'objectivement c'est quand même pas clean du tout. Désolé, même si ce tuto part d'un bon sentiment, son but n'est pas atteint (je crois). En tout cas, moi je vais chercher ailleurs...

[...]

Finalement, après avoir bien "galléré" et avoir étudié tout ça un peu partout sur le net, j'ai progressé et je reviens et poursuis désormais ce tuto qui est finalement bien fait, l'auteur s'est quand même donné bcp de mal à faire tous les schémas et il est vraiment complet ce tuto. Bon boulot si on considère "l'oeuvre" dans son ensemble malgré bcp de problèmes (d'erreurs) qui sont éludés et que le débutant rencontrera...
Hors ligne 7ou7a # Posté le 05/08/2011 à 13:35:44

Bonjour,
j'ai un souci quand j'appuie sur le bouton valider du formulaire j'ai l'erreur 404: La ressource demandée (/formulaire/firstFormAction.do) n'est pas disponible.
merci de m'aider
Hors ligne medamine9999 # Posté le 10/08/2011 à 16:06:49

salut tt le monde

moi j'ai suivi les instructions a la lettre et qd j'execute voila ce ke m'affiche

Etat HTTP 500 -

type Rapport d'exception

message

description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

exception

javax.servlet.ServletException: L'enrobeur (wrapper) ne peut trouver la classe servlet com.servlet.test.FormulaireAction ou une classe dont elle dépend
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

cause mère

java.lang.ClassNotFoundException: com.servlet.test.FormulaireAction
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Unknown Source)

note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.32.
Apache Tomcat/6.0.32



PLease j'ai besoin de votre aide !!

Voir tous les commentaires