ينقل كائن الاستجابة بشكل أساسي النتائج التي تمت معالجتها بواسطة حاوية JSP مرة أخرى إلى العميل. يمكنك ضبط حالة HTTP وإرسال البيانات إلى العميل من خلال متغير الاستجابة، مثل ملفات تعريف الارتباط ومعلومات رأس ملف HTTP وما إلى ذلك.
يبدو الرد النموذجي كما يلي:
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ...HeaderN: ... (سطر فارغ)<!doctype ...><html><head>...</head><body> ... </body></html>
يحتوي سطر الحالة على معلومات إصدار HTTP، مثل HTTP/1.1، ورمز الحالة، مثل 200، ورسالة قصيرة جدًا تتوافق مع رمز الحالة، مثل "موافق".
يلخص الجدول التالي الأجزاء الأكثر فائدة في رؤوس استجابة HTTP 1.1، والتي ستراها غالبًا في برمجة الشبكة:
رأس الاستجابة | يصف |
---|---|
يسمح | تحديد طرق الطلب التي يدعمها الخادم (GET، POST، وما إلى ذلك) |
التحكم في ذاكرة التخزين المؤقت | يحدد الظروف التي يمكن بموجبها تخزين مستندات الاستجابة مؤقتًا بشكل آمن. عادةً ما تكون القيمة عامة أو خاصة أو بدون ذاكرة تخزين مؤقت وما إلى ذلك. "عام" يعني أن المستند قابل للتخزين المؤقت، و"خاص" يعني أن المستند يتم تقديمه لمستخدم واحد فقط ويمكنه استخدام ذاكرة التخزين المؤقت الخاصة فقط. تعني عدم وجود ذاكرة تخزين مؤقت أن المستند لم يتم تخزينه مؤقتًا. |
اتصال | يرشد المتصفح إلى ما إذا كان يجب استخدام اتصالات HTTP المستمرة أم لا. ترشد قيمة الإغلاق المتصفح إلى عدم استخدام اتصالات HTTP المستمرة، بينما تعني كلمة "البقاء على قيد الحياة" استخدام الاتصالات المستمرة. |
التصرف في المحتوى | اسمح للمتصفح أن يطلب من المستخدم تخزين الاستجابة على القرص تحت الاسم المحدد |
ترميز المحتوى | حدد قواعد التشفير للصفحة أثناء الإرسال |
لغة المحتوى | اللغة المستخدمة للتعبير عن الوثيقة مثل en وen-us وru وغيرها. |
طول المحتوى | يشير إلى عدد البايتات في الاستجابة. يكون مفيدًا فقط إذا كان المتصفح يستخدم اتصالات HTTP المستمرة |
نوع المحتوى | يشير إلى نوع MIME الذي يستخدمه المستند |
تنتهي | قم بالإشارة إلى وقت انتهاء الصلاحية وإزالتها من ذاكرة التخزين المؤقت |
آخر تعديل | يشير إلى تاريخ آخر تعديل للمستند. يمكن للعميل تخزين المستند مؤقتًا وتوفير رأس طلب If-Modified-Since في الطلبات اللاحقة |
موقع | وفي غضون 300 ثانية، بما في ذلك جميع عناوين الاستجابة مع رمز الحالة، سيقوم المتصفح تلقائيًا بإعادة الاتصال واسترداد المستندات الجديدة. |
ينعش | يشير إلى عدد المرات التي يطلب فيها المتصفح تحديثات للصفحة. |
إعادة المحاولة بعد | يُستخدم مع 503 (الخدمة غير متاحة) لإخبار المستخدم بالمدة التي سيستغرقها قبل الاستجابة للطلب |
مجموعة ملفات تعريف الارتباط | أشر إلى ملف تعريف الارتباط المطابق للصفحة الحالية |
كائن الاستجابة هو مثيل للفئة javax.servlet.http.HttpServletResponse. مثلما يقوم الخادم بإنشاء كائن الطلب، فإنه يقوم أيضًا بإنشاء استجابة العميل.
يحدد كائن الاستجابة الواجهة للتعامل مع إنشاء رؤوس HTTP. باستخدام هذا الكائن، يمكن للمطورين إضافة ملفات تعريف ارتباط أو طوابع زمنية جديدة ورموز حالة HTTP والمزيد.
يسرد الجدول التالي الطرق المستخدمة لتعيين رؤوس استجابة HTTP. يتم توفير هذه الطرق بواسطة فئة HttpServletResponse:
SN | الطريقة والوصف |
---|---|
1 | تقوم String encodeRedirectURL(String url) بتشفير عنوان URL المستخدم بواسطة طريقة sendRedirect() |
2 | تقوم String encodeURL(String url) بتشفير عنوان URL وإرجاع عنوان URL الذي يحتوي على معرف الجلسة. |
3 | منطقي يحتوي على رأس (اسم سلسلة) يُرجع ما إذا كان رأس الاستجابة المحدد موجودًا |
4 | تقوم القيمة boolean isCommitted() بإرجاع ما إذا كان قد تم إرسال الاستجابة إلى العميل |
5 | يضيف void addCookie(Cookie cookie) ملف تعريف الارتباط المحدد إلى الاستجابة |
6 | يضيف void addDateHeader(String name, long date) رأس الاستجابة وقيمة التاريخ للاسم المحدد |
7 | يضيف void addHeader(String name, String value) رأس الاستجابة وقيمة الاسم المحدد |
8 | يضيف void addIntHeader(String name, int value) رأس الاستجابة وقيمة int للاسم المحدد |
9 | يقوم void FlushBuffer() بكتابة محتويات أي ذاكرة تخزين مؤقت إلى العميل |
10 | يمسح voidset() أي بيانات في أي ذاكرة تخزين مؤقت، بما في ذلك رموز الحالة ورؤوس الاستجابة المتنوعة |
11 | يقوم voidsetBuffer() بمسح بيانات ذاكرة التخزين المؤقت الأساسية، باستثناء رؤوس الاستجابة ورموز الحالة |
12 | يرسل void sendError(int sc) استجابة خطأ إلى العميل باستخدام رمز الحالة المحدد، ثم يقوم بمسح ذاكرة التخزين المؤقت |
13 | يرسل void sendError(int sc, String msg) استجابة خطأ إلى العميل باستخدام رمز الحالة والرسالة المحددة |
14 | يرسل void sendRedirect(String location) استجابة مؤقتة غير مباشرة إلى العميل باستخدام عنوان URL المحدد |
15 | يضبط void setBufferSize(int size) حجم المخزن المؤقت لنص الاستجابة |
16 | يحدد void setCharacterEncoding(String charset) مجموعة ترميز الاستجابة (مجموعة أحرف MIME)، مثل UTF-8 |
17 | يحدد void setContentLength(int len) طول محتوى الاستجابة في servlets HTTP. يتم استخدام هذه الطريقة لتعيين رأس معلومات طول محتوى HTTP. |
18 | void setContentType(String type) يعين نوع محتوى الاستجابة، إذا لم يتم إرسال الاستجابة بعد |
19 | void setDateHeader(String name, long date) يعين اسم ومحتوى رأس الاستجابة باستخدام الاسم والقيمة المحددين |
20 | void setHeader(String name, String value) يعين اسم ومحتوى رأس الاستجابة باستخدام الاسم والقيمة المحددين |
واحد وعشرون | void setIntHeader(String name, int value) يعين اسم ومحتوى رأس الاستجابة باستخدام الاسم والقيمة المحددين |
إثنان وعشرون | void setLocale(Locale loc) يعين لغة الاستجابة، إذا لم يتم إرسال الاستجابة بعد |
ثلاثة وعشرين | void setStatus(int sc) يعين رمز الحالة للاستجابة |
يستخدم المثال التالي طريقة setIntHeader () وطريقة setRefreshHeader () لمحاكاة ساعة رقمية:
<%@ page import="java.io.*,java.util.*" %><html><head><title>مثال لرأس التحديث التلقائي</title></head><body><center><h2 > مثال لرأس التحديث التلقائي </h2><% // قم بتعيين التحديث التلقائي كل 5 ثوانٍ Response.setIntHeader("Refresh"، 5); // احصل على الوقت الحالي Calendar Calendar = new GregorianCalendar(); am_pm; 0) am_pm = "AM"; out.println("الوقت الحالي هو: " + CT + "n");
احفظ الكود أعلاه باسم main.jsp وقم بالوصول إليه من خلال متصفحك. سيعرض وقت النظام الحالي كل 5 ثواني.
نتائج التشغيل هي كما يلي:
مثال على رأس التحديث التلقائي، الوقت الحالي هو: 9:44:50 مساءً
يمكنك أيضًا تعديل الكود أعلاه بنفسك وتجربة طرق أخرى للحصول على فهم أعمق.