doGet, doPost : quand et comment les utiliser ?

doGet, doPost : quand et comment les utiliser ? - Java - Programmation

Marsh Posté le 16-05-2006 à 15:15:05    

Bonjour,
 
Je travaille avec des servlets et j'ai donc affaire aux fameux doGet() et doPost().
Avec ces servlets, je (entre autres) génère des pages webs HTML qui feront à nouveau appel à mes servlets et ainsi de suites. Je contrôle donc toute la chaine.
 
Se pose pour moi la question de l'utilisation de doGet() et/ou doPost(). Tant que je n'ai pas de formulaires, le doPost() est "inutile", puisque tout se passe en doGet(). Cependant, je me demande si il ne serait pas intéressant d'exploiter ce pauvre doPost(). Je m'explique :
 
Quand je fais appel à une servlet, soit je lui demande d'afficher un certain contenu, soit je lui demande d'effectuer un traitement sur ce contenu (par exemple le trier d'une certaine manière).
Je trouvais donc pratique d'utiliser doGet() pour l'affichage, et doPost() pour le traitement (comme ca je n'ai pas de question à me poser dans le doGet(), je ne fais qu'afficher basiquement, et ce n'est que dans le doPost que je regarde la valeur de certain paramètres).
Donc c'est cool, ca marche, mais je me demande si c'est vraiment trés propre et normal d'utiliser les servlets comme ça.
 
Donc pourriez vous me dire comment "doivent" être utilisées ces deux méthodes ?
 
Merci !
 
P.S : j'ai un jour croisé un doOptions(), savez vous dans quel type de requête http générée par du html on peut le rencontrer ?


Message édité par ikao2 le 16-05-2006 à 15:55:36
Reply

Marsh Posté le 16-05-2006 à 15:15:05   

Reply

Marsh Posté le 17-05-2006 à 08:54:30    

Petit Up.
Question maintes et maintes fois posée ? :-/

Reply

Marsh Posté le 18-05-2006 à 10:55:06    

:(

Reply

Marsh Posté le 19-05-2006 à 15:39:32    

non, c'est juste que je pense que plus personne fait directement des servlets, Struts est passé par là (et les autres aussi).
 
sinon, pour ton get/post, voilà ce que comprends :
tu passes dans doPost() quand tu fais une soumission d'un formulaire qui à method="POST".
tu passes dans doGet() pour tous les autres cas (liens, soumission de formulaires GET, adresse direct dans la barre du navigateur (identique lien enfait),...)
 
en GET les paramètres (valeurs des champs du form) sont passés en clair dans l'URL (visibles dans la barre d'adresse du navigateur). En post, 'sont cachés (j'ai pas cherché où).
 
Un bon moyen de ne pas te prendre la tête est de renvoyer les deux méthodes vers une autre (doProcess(...) par exemple) qui traitera les deux cas (parce qu'en fait, tu t'en fous que les données arrivent par Get ou POST).
 
voilà voilà...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 24-05-2006 à 17:45:36    

Il me semble que les Bests Practices sont :
 
doGet() pour récupérer une ressource sur le serveur.
exemple : Je récupère un topic sur ce forum. Ca permet aussi à l'utilisateur de mettre un signet sur l'URL. La taille des données envoyées est limitée.
 
doPost() pour mettre à jour une ressource sur le serveur.
exemple : Je post un topic sur ce forum. Ca empêche aussi à l'utilisateur de mettre un signet sur l'URL. La taille des données envoyées est illimitée.
 
D'après ce que je vois sur JEE5, j'espère que tout le monde n'utilise pas forcémment Struts...

Reply

Marsh Posté le 24-05-2006 à 19:37:11    

y a pas de règle autre que  doGet est là pour répondre aux requêtes HTTP de type GET, et doPost pour celles de type POST.
 
cf la RFC pour connaître le sens de ces types de requête :  
GET : http://www.w3.org/Protocols/rfc261 [...] tml#sec9.3
POST : http://www.w3.org/Protocols/rfc261 [...] tml#sec9.5
 
Mais ce sont des visions un peu théorique des choses ... l'usage a déformé ces notions, donc en gros, c'est pas très grave d'utiliser l'un et/ou l'autre

Reply

Marsh Posté le 24-05-2006 à 19:42:22    

Ok merci pour vos réponses à tous les trois !
Je pense que je vais opter pour l'utilisation que décrit Roco. Puisqu'il n'y a rien de vraiment défini, autant se fixer quelque chose et de s'y tenir si je veux m'y retrouver après...

Reply

Marsh Posté le 24-05-2006 à 23:00:42    

ikao2 a écrit :

Ok merci pour vos réponses à tous les trois !
Je pense que je vais opter pour l'utilisation que décrit Roco. Puisqu'il n'y a rien de vraiment défini, autant se fixer quelque chose et de s'y tenir si je veux m'y retrouver après...


d'autant que ça correspond à de bonnes pratiques, meme si "dans l'usage", des imbéciles utilisent GET ou POST à tord et à travers.
cela dit, à ta place, je ne donnerai pas un comportement differement à ma servlet selon la methode, je serais (dans les grandes lignes) plutot partisan d'avoir 2 servlets differentes, n'implement chacune qu'une des deux méthodes.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed