Dans la phase initiale de l'apprentissage de JavaWeb, tout le monde rencontrera les méthodes doGet et doPost dans HttpServlet. J'ai lu "Head First Servlets & JSP" il y a deux jours et j'ai vu qu'il parlait de la différence entre les requêtes get et les requêtes post dans les servlets. Je le résume comme suit :
1 : La taille des données demandées est différente.
Étant donné que les données demandées par get sont ajoutées à l'URL et que la taille des données de l'URL ne peut généralement pas dépasser 2 Ko, il existe une limite à la taille des données utilisant la méthode de requête get. La méthode de demande de publication place les données dans le corps du message, donc en théorie il n'y a aucune limite sur la quantité de données. (Mais il ne peut pas être trop grand en fonctionnement réel)
2 : La sécurité est différente
Étant donné que les données demandées par get sont ajoutées à l'URL, les utilisateurs externes peuvent facilement les voir. De ce point de vue, ce n'est pas sûr. La méthode post place la requête dans le corps du message et ne sera pas affichée directement dans l'URL, donc de ce point de vue les données seront plus sécurisées.
3 : Création de favoris
Les demandes d'obtention peuvent créer des signets ; les demandes de publication ne le peuvent pas. Par exemple : supposons que vous ayez une page qui permet aux utilisateurs de spécifier des règles de recherche. L'utilisateur peut revenir une semaine plus tard et souhaiter récupérer les données d'origine, mais à ce moment-là, de nouvelles données sont disponibles sur le serveur.
4 : Utilisation des méthodes
get est utilisé pour obtenir quelque chose, juste une simple acquisition, sans apporter aucune modification au serveur. Publier signifie que l'utilisateur envoie des données pour traitement et peut modifier les données sur le serveur.
5 : La demande est-elle idempotente ?
La requête get est idempotente, elle récupère simplement quelque chose et ne modifie pas le contenu sur le serveur. Cela peut être effectué plusieurs fois sans aucun effet secondaire indésirable. Le message n'est pas idempotent et les données soumises dans le corps du message peuvent être utilisées pour des transactions irréversibles. De ce point de vue, vous devez donc utiliser la fonction doPost() avec prudence.
Si method="POST" n'est pas spécifié dans le formulaire, il s'agira par défaut d'une requête HTTP GET. Autrement dit, l'état par défaut consiste à appeler la requête get.
Dans la phase initiale de l'apprentissage de JavaWeb, tout le monde rencontrera les méthodes doGet et doPost dans HttpServlet.
(1) Méthode doGet : gère principalement les requêtes Get en Http (2) Méthode doPost : gère principalement les requêtes Post en Http
Alors, quelle est la différence entre la demande Get et la demande Post ?
(1) get n'a qu'un seul flux. Les paramètres sont ajoutés à l'URL. Le nombre de paramètres est strictement limité et ne peut être que des chaînes. Par exemple, http://localhost:8888/javaweb/getServlet?name=123.
(2) Les paramètres de la publication sont transmis via un autre flux, et non via l'URL, ils peuvent donc être très volumineux, et des données binaires peuvent également être transmises, telles que le téléchargement de fichiers.
Quand utiliser les méthodes doGet et doPost :
1. Pour le servlet soumis via le formulaire, vérifiez si la méthode du formulaire est get ou post.
2. servlet accessible via le lien <a href...>, doGet
3. Tapez l'adresse du servlet directement dans la barre d'adresse d'IE, doGet