English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يعد Object الرد الرئيسي مسؤولًا عن إرسال النتائج التي تم معالجتها من قبل حاوية JSP إلى العميل. يمكن تعيين حالة HTTP من خلال متغير response وإرسال بيانات إلى العميل، مثل Cookie، معلومات عناوين HTTP وما إلى ذلك.
يبدو الرد التقليدي كما يلي:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (سطر فارغ) !doctype ... <html> <head>...</head> <body> ... </body> </html>
يحتوي سطر الحالة على معلومات إصدار HTTP، مثل HTTP/1.1، رمز حالة، مثل 200، وأيضًا معلومات قصيرة جدًا تتعلق برمز الحالة، مثل OK.
في الجدول التالي يتم تلخيص أجزاء إعداد الرد الأكثر أهمية في إصدار HTTP/1.1، التي سترونها غالبًا في البرمجة الشبكية:
إعداد الرد | وصف |
---|---|
Allow | يحدد الطرق التي يدعمها الخادم للطلبات (GET، POST وما إلى ذلك) |
Cache-Control | يحدد حالات الأمان التي يمكن فيها تخزين الردود. عادةً تأخذ القيم public،private أوno-cache وغيرها. يعني Public أن المستند قابل للتخزين، يعني Private أن المستند مخصص للمستخدم الواحد فقط وأنه يمكن استخدامه في المخزن المؤقت الخاص فقط. يعني No-cache أن المستند غير قابل للتخزين |
Connection | يحدد ما إذا كان المتصفح سيستخدم اتصال HTTP مستمرcloseالقيمة يأمر المتصفح بعدم استخدام اتصال HTTP مستمر، حيث يعني keep-alive استخدام اتصال مستمر |
Content-Disposition | يطلب من المتصفح حفظ الرد باسم معين على القرص الصلب |
Content-Encoding | يحدد قواعد الترميز عند نقل الصفحة |
Content-Language | يعبر عن اللغة التي يستخدمها المستند، مثل en، en-us، ru وما إلى ذلك |
Content-Length | يعبر عن عدد البايتات في الرد. يهم فقط عندما يستخدم المتصفح اتصال HTTP مستمر (keep-alive) |
Content-Type | يعبر عن نوع MIME الذي يستخدمه المستند |
Expires | يحدد متى تنتهي صلاحية المستند ويزال من المخزن المؤقت |
Last-Modified | يحدد وقت آخر تعديل المستند. يمكن للعميل حفظ المستند وإعداده في طلبات لاحقة If-Modified-Sinceإعداد الطلب |
Location | في غضون 300 ثانية، يحتوي على جميع الردود التي تحتوي على رمز حالة، ويقوم المتصفح تلقائيًا بالاتصال مرة أخرى للبحث عن مستند جديد |
Refresh | يحدد متصفح ما هي الفترة الزمنية التي يطلب فيها تحديث الصفحة. |
Retry-After | يستخدم مع رمز 503 (غير متاح حاليًا) لتخبر المستخدم متى سيتم استجابة الطلب مرة أخرى |
Set-Cookie | يحدد الكوكي الموجود في الصفحة الحالية |
كائن response هو مثال على javax.servlet.http.HttpServletResponse. مثلما يخلق الخادم كائن request، فإنه يخلق أيضًا استجابة للعميل.
يحدد كائن response واجهة معالجة إنشاء عناوين معلومات HTTP. من خلال استخدام هذا الكائن، يمكن للمطورين إضافة كوكي جديد أو علامة زمنية، بالإضافة إلى رموز الحالة لـ HTTP وغيرها.
في الجدول أدناه يُظهر الطرق المستخدمة لتعيين عناوين استجابة HTTP، وهي تقدم من قبل كائن HttpServletResponse:
S.N. | الطريقة & وصف |
---|---|
1 | String encodeRedirectURL(String url) تحويل URL التي يستخدمها sendRedirect() إلى رمز |
2 | String encodeURL(String url) تحويل URL إلى رمز، وإرجاع URL يحتوي على ID الجلسة |
3 | boolean containsHeader(String name) إرجاع ما إذا كان عنوان الاستجابة المحدد موجودًا أم لا |
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 | void reset() إزالة أي بيانات من أي سحابة، بما في ذلك رموز الحالة وعناوين الاستجابة |
11 | void resetBuffer() إزالة بيانات السحابة الأساسية، دون استبعاد عناوين الاستجابة ورموز الحالة |
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) إعداد رأس الاسم والمحتوى باستخدام الاسم والمقدار المحدد |
21 | void setIntHeader(String name, int value) تحديد قيمة نوع int إلى رأس الاسم |
22 | void setLocale(Locale loc) إعداد بيئة اللغة للإستجابة، إذا لم يتم تقديم الإستجابة بعد |
23 | void setStatus(int sc) إعداد رمز الحالة للإستجابة |
في هذا المثال التالي يتم استخدام طريقة setIntHeader() ومتدخل setRefreshHeader() لتقديم ساعة رقمية:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>أساسيات التعليمات البرمجية (oldtoolbag.com)</title> </head> <body> <h2>مثال على التحديث التلقائي</h2> <% // إعداد التحديث التلقائي كل 5 ثوانٍ response.setIntHeader("Refresh", 5); // الحصول على الوقت الحالي Calendar calendar = new GregorianCalendar(); String am_pm; int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); if(calendar.get(Calendar.AM_PM) == 0) am_pm = "AM"; else am_pm = "PM"; String CT = hour + ":" + minute + ":" + second + " " + am_pm; out.println("وقت الحالي: " + CT + "\n"); %> </body> </html>
قم بإنشاء ملف main.jsp، ثم قم بزيارة هذا الملف عبر المتصفح. سيتم عرض الوقت الحالي كل 5 ثوانٍ.
يمكنك أيضًا تعديل الشيفرة أعلاه بنفسك، جرب استخدام طرق أخرى، يمكنك الحصول على فهم أعمق.