Bonjour !
Alors voilà: je suis face à mon éternel problème en servlet/jsp. S'il vous plait de l'aide !!
1)J'ai une première page de formulaire simple :
(je fais un exemple vraiment bêta déso)
Il va demander au client son nom et la date.
2) une page deux est rendue : c'est un formulaire plus complexe: (cette page là est bien générée)
grâce à la date et le nom du client je vais interroger la base: on aura comme résultats ce que le client a mangé ce jour là.
Par exemple "Pomme" comme dessert.
mais dans ce formulaire deux : il y a un complément d'information à insérer! (qui devra être inséré dans la base)
Par exemple :
cette Pomme vous l'avez mangé : dans la cuisine, chez vous, à votre entreprise ... (menu déroulant)
vous l'avez mangé: cuite , crue, cuite au four ... (menu déroulant)
Je dois donc faire appel dans la servlet à une méthode différente (appelée dotestAffichage).
Cette méthode est appelée grâce à un bouton contenue dans la page deux.
Voici la page deux :
Voici la 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 <% ResultSet resultSetIDPrelevement = (ResultSet) request.getAttribute("resultSetIDPrelevement"); String nomCentre = (String) session.getAttribute("nomCentre"); String NEtude = (String)session.getAttribute("NEtude"); String urlAction=(String)request.getAttribute("urlAction"); %> <% String[] listModalite= {"1erjet-HorsActivité","1erjet-EnActivité", "2iemejet-Désinfection","2iemejet-Flambage","Ecoulement"}; String [] CorrespModal={"1erjet-HorsActivite","1erjet-EnsActivite", "2iemejet-Desinfection","2iemejet-Flambage","Ecoulement"}; String[] listExutoire={"Mitigeur","Mélangeur","Robinet","Douchette", "Douche","Temporisé","Vanne"}; String [] CorrespExu={"Mi","Me","Ro","Dt","Do","Tp","Va"}; %> <html> <head> <title>Fiche prélèvement: Actualisation - formulaire</title> </head> <body> <center> <form action="<%= urlAction %>" method="post"> <img src="logoBiotech.jpg" align="left" alt="logo Biotech-Germande" width="5%"></img> <h2>Fiche prélèvement: Actualisation - formulaire</h2> <br> </center> <br><br> <table> <tr> <td>Nom du centre hospitalier: </td> <td><input name="nomCentre" value="<%=nomCentre %>" type="text" size="20"></td> </tr> <tr> <td>Code interne : </td> <td><input name="NEtude" value="<%= NEtude %> " type="text" size="20"></td> </tr> </table> <!-- TABLE CONCERNANT LES PRELEVEMENTS --> <table> <% int m=1; while (resultSetIDPrelevement.next()){ String idPrelevement = resultSetIDPrelevement.getString("idPrelevement"); String modalite="modalite"+m; String exutoire="exutoire"+m; String choix="choix"+m; %> <tr> <td><input name="idPrelevement" value="<%= idPrelevement %>" type="text" size="25"></td> <td><input type="radio" name="<%=choix %>" value="Vl">Valider <input type="radio" name="<%=choix %>" value="Ef">Effacer </td> <td><SELECT name="modalite" > <% for (int i=0;i<listModalite.length;i++){ %> <OPTION value="<%= CorrespModal[i] %>" ><%= listModalite[i] %></OPTION> <% } %> </SELECT></td> <td><SELECT name="exutoire" > <% for (int i=0;i<listExutoire.length;i++){ %> <OPTION value="<%= CorrespExu[i] %>" ><%= listExutoire[i] %></OPTION> <% } %> </SELECT></td> </tr> <% m++; } %> </table> <table> <tr> <td><input type="submit" name="action" value="testAffichage"></td> <td><input type="reset" value="Rétablir"></td> </tr> </table> </form> </body> </html>
Voici la page trois qui est censée être rendue:
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214 public class ServletFichePrlvLEGactual extends HttpServlet{ private String urlErreurs = null; private ArrayList erreursInitialisation = new ArrayList<String>(); private String[] paramètres = {"urlFormulaire", "urlControleur","urlReponse","urlErreurs","urlReponseBis"}; private Map params = new HashMap<String, String>(); private ResultSet resultSetIDPrelevement; // init @SuppressWarnings("unchecked") 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é"); } } } @SuppressWarnings("unchecked") public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 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("valider")) { try { doInterrogationFormulaire(request, response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return; } if (méthode.equals("post") && action.equals("testAffichage")) { // validation du formulaire de saisie try { dotestAffichage(request, response); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return; } // autres cas doInit(request, response); } void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // on récupère la session de l'utilisateur HttpSession session = request.getSession(true); // on envoie le formulaire vide session.setAttribute("nomCentre", ""); session.setAttribute("NEtude", ""); request.setAttribute("urlAction", (String) params.get("urlControleur")); getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward( request, response); return; } void doInterrogationFormulaire(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, SQLException, Exception { // on récupère les paramètres String nomCentre = (String) request.getParameter("nomCentre"); String NEtude = (String) request.getParameter("NEtude"); //puis on le stocke dans la session HttpSession session = request.getSession(true); session.setAttribute("nomCentre", nomCentre); session.setAttribute("NEtude", NEtude); Connexion com = new Connexion(); try{ String query="SELECT idEtabl FROM Etablissement WHERE NomEtabl='"+nomCentre+"'"; ResultSet idCentre = com.ConnectAndQuestion(query); idCentre.first(); String resulstatId=idCentre.getString("idEtabl"); String queryidPrelevement="SELECT idPrelevement FROM Etabl_Prlvmt where NEtude='"+NEtude+"' AND idEtabl='"+resulstatId+"'"; resultSetIDPrelevement=com.ConnectAndQuestion(queryidPrelevement); if(resultSetIDPrelevement.next()!=false){ resultSetIDPrelevement.beforeFirst(); request.setAttribute("resultSetIDPrelevement", resultSetIDPrelevement); getServletContext().getRequestDispatcher((String) params.get("urlReponse")).forward( request, response); com.close(); return; } else { getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward( request, response); com.close(); return; } } catch(Exception ex) { System.err.println("\n*** SQLException caught in main()"); getServletContext().getRequestDispatcher((String) params.get("urlFormulaire")).forward( request, response); return; } } void dotestAffichage(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, SQLException, Exception { // on récupère les paramètres d'intéret ResultSet resultSetIDPrelevement = (ResultSet) request.getAttribute("resultSetIDPrelevement"); Connexion updatePrlvmt= new Connexion(); try{ //serveur,login,pwd,database updatePrlvmt.loadDriverAndConnect("127.0.0.1","3306","root","root",""); int k=1; while (resultSetIDPrelevement.next()){ String idPrelevement = resultSetIDPrelevement.getString("idPrelevement"); if (request.getParameter("choix"+k) !="Vl"){ String champModalite=(String) request.getParameter("modalite"+k); String champExutoire=(String) request.getParameter("exutoire"+k); String queryUpdate="UPDATE PrelevLEG SET Modalite='"+champModalite + "',Exutoire='"+champExutoire + "',Temp='null',TempMax='null',Heure='null' WHERE idPrelevement='"+idPrelevement + "';"; updatePrlvmt.execute(queryUpdate); k++; } if (request.getParameter("choix"+k) !="Ef"){ String queryUpdate="DELETE FROM PrelevLEG where idPrelevement='"+idPrelevement +"'"; updatePrlvmt.execute(queryUpdate); k++; } } updatePrlvmt.close(); }catch(Exception ex) { System.err.println("\n*** SQLException caught in main()"); } request.setAttribute("urlAction", (String) params.get("urlControleur")); getServletContext().getRequestDispatcher((String) params.get("urlReponseBis")).forward(request, response); return; } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { // on passe la main au GET doGet(request, response); } }
Voici la partie concernée dans 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 <%@page language="java" contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page import="java.sql.ResultSet"%> <% String nomCentre = (String) request.getParameter("nomCentre"); String NEtude = (String) request.getParameter("NEtude"); ResultSet resultSetIDPrelevement = (ResultSet) request.getAttribute("resultSetIDPrelevement"); String urlAction=(String)request.getAttribute("urlAction"); %> <html> <head> <title>Fiche prélèvement: Actualisation effectuée - formulaire</title> </head> <body> <center> <form action="<%= urlAction %>" method="post"> <img src="logoBiotech.jpg" align="left" alt="logo Biotech-Germande" width="5%"></img> <h2>Fiche prélèvement: Actualisation - formulaire</h2> <br> </center> <table> <tr> L'actualisation a bien été effectuée </tr> </table> </form> </body> </html>
Pourquoi je ne peux pas rappeler de méthodes dans la servlet à partir de cette page deux alors qu'elle contient bien urlAction, qu'elle est récensée dans le web.xml et que la méthode (appelée dotestAffichage) de la servlet renvoie bien vers la page 3.
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 <!-- ServletFichePrlvLEG actualisation --> <servlet> <servlet-name>FichePrlvLEGactual</servlet-name> <servlet-class>germande.LEG.ServletFichePrlvLEGactual</servlet-class> <init-param> <param-name>urlFormulaire</param-name> <param-value>/WEB-INF/JSP/LEG/Prlvmnt/formInterrogationActualPrlvmtLEG.jsp</param-value> </init-param> <init-param> <param-name>urlErreurs</param-name> <param-value>/erreursRecap.biotech.jsp</param-value> </init-param> <init-param> <param-name>urlReponse</param-name> <param-value>/WEB-INF/JSP/LEG/Prlvmnt/formFichePrlvLEGactual.jsp</param-value> </init-param> <init-param> <param-name>urlReponseBis</param-name> <param-value>/WEB-INF/JSP/LEG/Prlvmnt/respFichePrlvLEGactual.jsp</param-value> </init-param> <init-param> <param-name>urlControleur</param-name> <param-value>ServletFichePrlvLEGactual</param-value> </init-param> </servlet> <!--Mapping Fiche Prlvment LEG actualisation --> <servlet-mapping> <servlet-name>FichePrlvLEGactual</servlet-name> <url-pattern>/ServletFichePrlvLEGactual</url-pattern> </servlet-mapping>
Lors que je clique sur le bouton testAffichage dans la page deux : je suis rendue à une page /null .
Incrompréhensible parce que j'utilise la même méthode pour générée la page réponse (page 2) qui est bien renvoyée.
Merci beaucoup pour votre aide.
Partager