في المرحلة الأولى من تعلم JavaWeb، سيواجه الجميع طريقتي doGet وdoPost في HttpServlet. قرأت "Head First Servlets & JSP" منذ يومين ورأيت أنه يتحدث عن الفرق بين طلبات الحصول وطلبات النشر في Servlets وألخصها على النحو التالي:
1: حجم البيانات المطلوبة مختلف.
نظرًا لأن البيانات المطلوبة بواسطة get يتم إلحاقها بعنوان URL، ولا يمكن أن يتجاوز حجم بيانات عنوان URL بشكل عام 2 كيلو بايت، فإن هناك حدًا لحجم البيانات باستخدام طريقة طلب الحصول. تضع طريقة طلب النشر البيانات في نص الرسالة، لذلك من الناحية النظرية لا يوجد حد لكمية البيانات. (ولكن لا يمكن أن يكون كبيرًا جدًا في التشغيل الفعلي)
2: الأمن مختلف
نظرًا لأن البيانات المطلوبة بواسطة get ملحقة بعنوان URL، فيمكن للمستخدمين الخارجيين رؤيتها بسهولة، ومن هذا المنظور، فهي ليست آمنة. تضع طريقة النشر الطلب في نص الرسالة ولن يتم عرضها مباشرة في عنوان URL، لذلك من هذا المنظور ستكون البيانات أكثر أمانًا.
3: إنشاء المرجعية
يمكن لطلبات الحصول على إنشاء إشارات مرجعية؛ ولا يمكن لطلبات النشر. على سبيل المثال: لنفترض أن لديك صفحة تسمح للمستخدمين بتحديد قواعد البحث. قد يعود المستخدم بعد أسبوع ويريد الحصول على البيانات الأصلية، ولكن في هذا الوقت توجد بيانات جديدة على الخادم.
4: استخدام الأساليب
يتم استخدام get للحصول على شيء ما، وهو مجرد عملية اكتساب بسيطة، دون إجراء أي تغييرات على الخادم. النشر يعني أن المستخدم يرسل البيانات للمعالجة ويمكنه تعديل البيانات الموجودة على الخادم.
5: هل الطلب غير فعال؟
طلب الحصول غير فعال، فهو يحصل فقط على شيء ما ولا يعدل المحتوى الموجود على الخادم. يمكن إجراؤها عدة مرات دون أي آثار جانبية سيئة. المنشور ليس معطلاً، ويمكن استخدام البيانات المقدمة في نص البريد في معاملات لا رجعة فيها. لذلك من هذا المنظور، يجب عليك استخدام الدالة doPost() بحذر.
إذا لم يتم تحديد الطريقة = "POST" في النموذج، فسيتم تعيينها بشكل افتراضي على طلب HTTP GET. أي أن الحالة الافتراضية هي استدعاء طلب الحصول.
في المرحلة الأولى من تعلم JavaWeb، سيواجه الجميع طريقتي doGet وdoPost في HttpServlet.
(1) طريقة doGet: تتعامل بشكل أساسي مع طلبات الحصول على Http (2) طريقة doPost: تعالج بشكل أساسي طلبات النشر في Http
إذن ما هو الفرق بين الحصول على الطلب وطلب النشر؟
(1) يحتوي get على دفق واحد فقط. يتم إلحاق المعلمات بعنوان url. عدد المعلمات محدود للغاية ويمكن أن يكون عبارة عن سلاسل فقط
(2) يتم تمرير معلمات المنشور من خلال دفق آخر، وليس من خلال عنوان URL، لذلك يمكن أن تكون كبيرة جدًا، ويمكن أيضًا تمرير البيانات الثنائية، مثل تحميل الملف.
متى تستخدم أساليب doGet وdoPost:
1. بالنسبة إلى servlet الذي تم إرساله من خلال النموذج، راجع ما إذا كانت طريقة النموذج هي الحصول على أو النشر.
2. يتم الوصول إلى servlet من خلال الرابط <a href...>، doGet
3. اكتب عنوان servlet مباشرة في شريط عناوين IE، doGet