Bonjour à tous

J'ai un problème avec request et response.
J'utilise une servlet et je veux passer ses pramétres request et response à une autre classe pour réduire la charge de la page servlet.

Page 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
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
 
package istia.st.servlets.personne;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.sql.*;
import sun.jdbc.odbc.*;
@SuppressWarnings("serial")
public class ServletPersonne extends HttpServlet {
	// paramètres d'instance
	private String urlErreurs = null;
	private ArrayList erreursInitialisation = new ArrayList<String>();
	private String[] paramètres={"urlFormulaire","urlReponse","lienRetourFormulaire"};
	private Map params=new HashMap<String,String>();
	public ArrayList<Object> valeurRetour = new ArrayList<Object>();
	private Connection con;
	// init
@SuppressWarnings("unchecked")
public void init() throws ServletException {//la méthode [init] exécutée au chargement initial de la servlet
	// 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é");
	}
}
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {//la méthode [doGet] appelée par le serveur web lorsqu'une requête de type GET a été faite à l'application
	// 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);
	request.setAttribute("lienRetourFormulaire", "");
	getServletContext().getRequestDispatcher(urlErreurs).forward(
	request, response);
	// fin
	return;
	}
	try {
       con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");
	} catch (SQLException e){}
	// 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
ValidationFormulaire ValidationForm=new ValidationFormulaire(request,response,params,urlErreurs);
ValidationForm.ValiderFormulaire();
		}
 
 
 
 
// validation du formulaire :  la méthode [doValidationFormulaire] traite l'action n° 2 [POST /personne1/main] avec les paramètres postés [txtNom, txtAge, action]
//J'ai essayé de remplacer ce code commenté dans une classe
/*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");
	// qu'on mémorise dans la session
	HttpSession session = request.getSession(true);
	session.setAttribute("nom", nom);
	session.setAttribute("age", age);
	// 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);
	request.setAttribute("lienRetourFormulaire", (String)params.get("lienRetourFormulaire"));
	getServletContext().getRequestDispatcher(urlErreurs).forward(
	request, response);
	return;
	}
	// les paramètres sont corrects - on envoie la page réponse
	request.setAttribute("lienRetourFormulaire", (String)params.get("lienRetourFormulaire"));
	getServletContext().getRequestDispatcher((String)params.get("urlReponse")).forward(request,
	response);
	try{
		Statement st = con.createStatement();
		st.executeUpdate("INSERT INTO utilisateur ( nom,age ) VALUES ('" + nom + "', '" + age + "' )");  //exécution de la requête
		//ResultSet rs = st.executeQuery("SELECT * FROM essai");
		}
		catch(SQLException e)
	    {
	    System.out.println("Exception SQL");
	    }
 
	return;
}*/
// post
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {//la  méthode   [doPost]   appelée  par   le  serveur  web  lorsqu'une   requête  de   type  POST 
// on passe la main au GET
doGet(request, response);
}
}
La classe qui va remplacé le code commenté :

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
 
package istia.st.servlets.personne;
 
import java.io.IOException;
import java.lang.Object;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
 
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
 
 
public class ValidationFormulaire  extends HttpServlet {
	public HttpServletRequest request;
	public HttpServletResponse response;
	Map<String, String> params=new HashMap<String,String>();
	public ArrayList<Object> valeurRetour = new ArrayList<Object>();
	public String urlErreurs = null;
	public ValidationFormulaire(HttpServletRequest request,HttpServletResponse response,Map<String, String> params,String urlErreurs)throws ServletException, IOException {
 
		request=this.request;	
		params=this.params;
		urlErreurs=this.urlErreurs;
		response=this.response;
}
public   void ValiderFormulaire()throws ServletException,IOException {
	// on récupère les paramètres
	String nom = request.getParameter("txtNom");
	String age = request.getParameter("txtAge");
	// qu'on mémorise dans la session
	HttpSession session = request.getSession(true);
	session.setAttribute("nom", nom);
	session.setAttribute("age", age);
	// 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("lienRetourFormulaire", (String)params.get("lienRetourFormulaire"));
	getServletContext().getRequestDispatcher((String)params.get("urlReponse")).forward(request,response);	// les paramètres sont corrects - on envoie la page réponse
 
   }
 
}
Et merci d'avance