English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
كما تم مناقشة ذلك في الفصول السابقة، عندما يستجيب خادم الويب لطلب HTTP، يشتمل الرد عادةً على سطر الحالة بعض الرؤوس الإجابية، سطر فاصل وملف.
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) !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 (Multipurpose Internet Mail Extension) للملف الرد. |
Expires | هذه المعلومات الرأسية تحدد وقت انتهاء صلاحية المحتوى، بعد ذلك لا يمكن حفظ المحتوى في المخزن. |
Last-Modified | هذه المعلومات الرأسية تشير إلى وقت آخر تعديل الملف. بعد ذلك، يمكن للعميل حفظ الملف في المخزن، واستخدامه في الطلبات اللاحقة من خلال If-Modified-Since تقدم هذه المعلومات الرأسية تاريخًا. |
Location | يجب أن تحتوي هذه المعلومات الرأسية على جميع الردود التي تحتوي على رمز حالة. في غضون 300 ثانية، ستُخبر المتصفح عن عنوان الملف. سيقوم المتصفح تلقائيًا بالاتصال بهذا الموقع واستنساخ الملف. |
Refresh | هذه المعلومات الرأسية تحدد كيفية طلب المتصفح للصفحة المُحدثة بشكل سريع. يمكنك تحديد عدد الثواني لتحديث الصفحة. |
Retry-After | هذه المعلومات الرأسية يمكن استخدامها مع الردود 503 (Service Unavailable - غير متاح) لتخبر العملاء متى يمكن تكرار طلبهم. |
Set-Cookie | هذه المعلومات الرأسية تُحدد الكوكي المرتبط بالموقع. |
يمكن استخدام الطرق التالية لتعيين رؤوس الاستجابة HTTP في برنامج Servlet. هذه الطرق من خلال HttpServletResponse متاح للاستخدام.
الترقيم | الطريقة & الوصف |
---|---|
1 | String encodeRedirectURL(String url) ت编码 عنوان URL المحدد الذي يتم استخدامه في طريقة sendRedirect، أو إذا لم تكن الت编码 ضرورية، فيتم إرجاع عنوان URL غير المعدل. |
2 | String encodeURL(String url) ت编码 عنوان URL المحدد الذي يحتوي على ID جلسة، أو إذا لم تكن الت编码 ضرورية، فيتم إرجاع عنوان URL غير المعدل. |
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) إضافة رأس استجابة يحتوي على اسم معين وعدد صحيح. |
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) استخدام عنوان الوجه المحدد لإرسال استجابة إعادة توجيه مؤقتة إلى العملاء. |
15 | void setBufferSize(int size) 为响应主体设置首选的缓冲区大小。 |
16 | void setCharacterEncoding(String charset) 设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。 |
17 | void setContentLength(int len) 设置在 HTTP Servlet 响应中的内容主体的长度,该方法设置 HTTP Content-Length 头。 |
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) 设置一个带有给定的名称和整数值的响应报头。 |
22 | void setLocale(Locale loc) 如果响应还未被提交,设置响应的区域。 |
23 | void setStatus(int sc) 为该响应设置状态码。 |
您已经在前面的示例中看到 setContentType() 方法,下面的示例也使用了同样的方法,此外,我们会用 setIntHeader() 方法来设置 Refresh 头。
//导入必需的 java 库 import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Refresh") //توسيع HttpServlet public class Refresh extends HttpServlet { //طريقة معالجة طلب GET public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //ضبط وقت تحميل التصفح التلقائي إلى 5 ثوان response.setIntHeader("Refresh", 5); //ضبط نوع المحتوى للإجابة response.setContentType("text/html;charset=UTF-8"); //الحصول على تقويم باستخدام منطقة الوقت واللغة الافتراضية Calendar cale = Calendar.getInstance(); //تحويل نوع Calendar إلى نوع Date Date tasktime = cale.getTime(); //ضبط تنسيق إخراج التاريخ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //إخراج تنسيق String nowTime = df.format(tasktime); PrintWriter out = response.getWriter(); String title = "Header إعادة تحميل تلقائي - مثال شبكة تعليم أساسي"; String docType = "<!DOCTYPE html>\n" out.println(docType + "<html>\n" "<head><title>" + title + "</title></head>\n" "<body bgcolor=\"#f0f0f0\">\n" "<h1 align=\"center\">" + title + "</h1>\n" "<p>الوقت الحالي هو: " + nowTime + "</p>\n" } // طريقة معالجة طلب POST public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
مثال الاختبار أعلاه موجود في مشروع TomcatTest، ويكون تكوين web.xml المناسب له كالتالي:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <!-- اسم الكلاس --> <servlet-name>Refresh</servlet-name> <!-- الملف الموجود فيه --> <servlet-class>com.w3codebox.test.Refresh</servlet-class> </servlet> <servlet-mapping> <servlet-name>Refresh</servlet-name> <!-- موقع الويب المطلوب زيارتة --> <url-pattern>/TomcatTest/Refresh</url-pattern> </servlet-mapping> </web-app>
الآن، قم بتشغيل Servlet أعلاه وسيتم عرض الوقت الحالي كل 5 ثوانٍ. بعد تشغيل Servlet ومجرد الانتظار قليلاً، يمكنك رؤية النتيجة التالية: