Bonjour,
j'ai le meme probleme que dans ce post : http://www.developpez.net/forums/sho...hlight=forward
mais je ne comprends pas la solution donnée...
Merci de votre aide
Bonjour,
j'ai le meme probleme que dans ce post : http://www.developpez.net/forums/sho...hlight=forward
mais je ne comprends pas la solution donnée...
Merci de votre aide
Qu'elle partie tu ne comprends pas dans la solution donnée ?
1) La servlet
2) La jsp
3) La configuration du web.xml
La réponse donnée dans l'avant dernier message avec la configuration du web.xml
Les balises <servlet-mapping> je les ai dans mon web xml mais moi ca me redirige toujours sur une page blanche avec comme url celle du servlet...
En gros la structure de mon servlet c'est :
if(ajouter) //on ajoute a la bdd
else if(modifier) //on modif
else //supprimer
redirection vers mon index.jsp
La redirection est commune au 3 cas et elle marche dans la modif et la suppression mais pas lors de l'ajout ! la seule différence et la méthode ! post pour l'ajout et get pour les 2 autres.
as-tu fait celà ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public void doPost(ServletRequest request, ServletResponse response) throws IOException, ServletException { // on traite de la même manière les GET et les POST doGet(request, response); } public void doGet(ServletRequest request, ServletResponse response) throws IOException, ServletException { jeTraiteMesActions(request, response); jeFaisMonForwardVersMaJSP(request, response); }
Voila le code de ma 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 import beans.MysqlConnec; import java.io.*; import java.net.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.*; import javax.servlet.http.*; public class stock extends HttpServlet { MysqlConnec connec = new MysqlConnec(); protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, SQLException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String action = request.getParameter("action"); if(action.equalsIgnoreCase("ajouter")) { String nom = request.getParameter("nom"); int prix = Integer.parseInt(request.getParameter("prix")); int qte = Integer.parseInt(request.getParameter("qte")); Connection con = connec.getConnec(); int rs = connec.executeQueryOther("INSERT INTO article (id, nom, prix, qte, date) VALUES('', '"+nom+"', "+prix+", "+qte+", now())"); connec.stopConnec(); } else if(action.equalsIgnoreCase("modifier")) { String nom = request.getParameter("nom"); int id = Integer.parseInt(request.getParameter("id")); int prix = Integer.parseInt(request.getParameter("prix")); int qte = Integer.parseInt(request.getParameter("qte")); Connection con = connec.getConnec(); int rs = connec.executeQueryOther("UPDATE article SET nom='"+nom+"', prix='"+prix+"', qte='"+qte+"' WHERE id="+id); connec.stopConnec(); } else if(action.equalsIgnoreCase("supprimer")){ int id = Integer.parseInt(request.getParameter("id")); Connection con = connec.getConnec(); int rs = connec.executeQueryOther("DELETE FROM article WHERE id="+id); connec.stopConnec(); } getServletContext().getRequestDispatcher("/index.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }
Ha ben je viens de tester ta solution et ca marche ! j'ai redirigé le doPost sur le doGet ! Mais bon je ne comprend pas trop pourquoi ca marche comme ca et pas directement....
si t'as une réponse
En tout cas merci
Tout dépend de ta méthode HTTP.
Si tu soumets une requête HTTP de type "POST, le conteneur de servlet (Tomcat) va invoquer la méthode doPost().
Si tu soumets une requête HTTP de type "GET", le conteneur de servlet va invoquer la méthode doGet().
Généralement on traite les GET et les POST de la même manière mais tu pourrais par exemple interdire les requêtes de type GET pour ne pas que les utilisateurs tentent de soumettre des formulaires en forçant l'URL du navigateur (en réalité ils pourraient toujours simuler un POST HTTP mais là il faut être un minimum connaisseur).
Il existe d'autres méthodes (PUT, REMOVE, ...), elles sont pratiquement jamais utilisées et sont par défaut interdite par les serveurs Web tels que Apache car trop dangereuses. (cf : http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager