طلب عميل JSP
إجراءات JSP التي تستخدم بنيات في بناء جملة XML للتحكم في سلوك محرك servlet. سوف نتعلم المزيد من التفاصيل حول عناصر إجراء JSP المختلفة مثل طلب العميل واستجابة الخادم ورموز حالة HTTP.
طلب عميل JSP
- عندما يتم طلب صفحة الويب، فإنها ترسل المعلومات إلى خادم الويب في رأس HTTP.
- يمكننا استخدام هذه المعلومات باستخدام كائن HTTPServletRequest.
- يتم تخزين المعلومات التي يرسلها المتصفح في رأس الطلب لطلب HTTP.
- نحن نستخدم رؤوسًا مختلفة لإرسال المعلومات إلى كائن الطلب.
الرؤوس في JSP
الرؤوس المختلفة في JSP موضحة أدناه:
| رأس | الوصف | مثال |
|---|---|---|
| استمر | فهو يحدد أنواع MIME التي يمكن للمتصفح أو العملاء الآخرين التعامل معها | صورة/png أو صورة/jpeg |
| قبول-محارف | يستخدم مجموعة الأحرف التي يستخدمها المتصفح لعرض المعلومات | ISO-8859-1 |
| قبول - الترميز | وهو يحدد نوع الترميز الذي يعالجه المتصفح | Gzip أو ضغط |
| قبول اللغة | ويحدد العملاء اللغة المحددة | أون، أون_أوس |
| ترخيص | الرأس الذي يستخدمه العملاء عند محاولة الوصول إلى صفحات الويب المحمية بكلمة مرور | |
| الاتصال | يشير إلى ما إذا كان العميل يمكنه التعامل مع اتصالات HTTP المستمرة (يمكن للمتصفح استرداد ملفات متعددة) | حافظ على حياتك |
| طول المحتوى | ينطبق على طلبات النشر. أنه يعطي حجم البيانات اللاحقة بالبايت | |
| كوكي | إرجاع ملف تعريف الارتباط إلى الخادم (تلك التي تم إرسالها مسبقًا إلى المتصفح) | |
| مضيف | يحدد المضيف والمنفذ لعنوان URL الأصلي | |
| إذا تم تعديلها منذ ذلك الحين | يشير إلى أنه لا يتطلب سوى صفحة واحدة إذا تم تغييرها أو تعديلها | |
| إذا لم يتم تعديلها منذ ذلك الحين | يشير إلى أنه يتطلب صفحة فقط إذا لم يتم تغييرها أو تعديلها | |
| الإحالات | يشير إلى عنوان URL لصفحة URL المرجعية | |
| وكيل المستخدم | يحدد المتصفح أو طلب العميل |
طرق رأس HTTP في JSP
يتم استخدام الطرق التالية لقراءة رأس HTTP في صفحة JSP:
- ملف تعريف الارتباط[] getCookies() – تقوم بإرجاع مصفوفة تحتوي على كائنات ملفات تعريف الارتباط التي أرسلها العميل
- تعداد getAttributeNames () – يحتوي على تعداد أسماء السمات للطلب
- التعداد getHeaderNames() – يحتوي على تعداد أسماء header .
- التعداد getParameterNames () – يحتوي على تعداد الحصول على أسماء المعلمات في الطلب.
- HttpSessiongetSession() – يقوم بإرجاع الجلسة الحالية المرتبطة بالطلب أو إذا لم يكن لديه جلسة، فسيقوم بإنشاء جلسة جديدة.
- لغة getLocale () - يعيد الإعدادات المحلية المفضلة التي سيقبل العميل المحتوى فيها. وقد تم تعيينها للاستجابة. بشكل افتراضي، ستكون القيمة هي الإعدادات المحلية الافتراضية للخادم.
- كائن getAttribute (اسم السلسلة) - تقوم بإرجاع قيمة السمة المسماة ككائن.
- ServletInputStreamgetInputStream () - يسترد نص الطلب كبيانات ثنائية.
- سلسلة getAuthType () - تقوم بإرجاع اسم نظام المصادقة لحماية servlet
- سلسلة getCharacterEncoding () - إرجاع اسم ترميز الأحرف المستخدم في نص الطلب.
- سلسلة getContentType () - تقوم بإرجاع نوع MIME لنص الطلب.
- سلسلة getContextPath () - يُرجع جزء URI للطلب الذي يشير إلى مسار سياق URI
- سلسلة getHeader (اسم السلسلة) - تقوم بإرجاع رأس الطلب كسلسلة
- سلسلة getMethod () - تقوم بإرجاع اسم أسلوب HTTP مثل GET وPOST
- سلسلة getParameter (اسم السلسلة) - تقوم بإرجاع معلمة الطلب كسلسلة.
- سلسلة getPathInfo () - تقوم بإرجاع معلومات المسار المرتبطة بعنوان URL
- سلسلة getQueryString () - تقوم بإرجاع سلسلة الاستعلام المرتبطة بعنوان URL للطلب
- سلسلة getServletPath () - يعيد جزء عناوين URL للطلب الذي يستدعي JSP
- سلسلة [] getParameterValues (اسم السلسلة) - تُرجع مصفوفة كائنات السلسلة التي تحتوي على القيم التي تحتوي عليها معلمة الطلب
على سبيل المثال:
في المثال أدناه، نستخدم طرقًا مختلفة باستخدام كائن الطلب
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>
<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
HttpSession gurusession = request.getSession();
out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
Locale gurulocale = request.getLocale ();
out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
String path = request.getPathInfo();
out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>");
String lpath = request.get();
out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>");
String servername = request.getServerName();
out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
int portname = request.getServerPort();
out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
Enumeration hnames = request.getHeaderNames();
while(hnames.hasMoreElements()) {
String paramName = (String)hnames.nextElement();
out.print ("<tr><td>" + paramName + "</td>" );
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>");
}
%>
شرح الكود:
سطر الكود 17: باستخدام كائن الطلب، نحصل على كائن الجلسة لتلك الجلسة المحددة، ونحصل على قيمة الكائن لتلك الجلسة
سطر الكود 19: باستخدام كائن الطلب، نحصل على لغة تلك الجلسة المحددة i.een_US لغة JSP تلك.
سطر الكود 21: باستخدام كائن الطلب، نحصل على معلومات المسار لـ JSP. في هذه الحالة، يكون فارغًا لأنه لا يوجد مسار لعنوان URL المذكور.
سطر الكود 23: باستخدام كائن الطلب، نحصل على مسار السياق، أي مسار الجذر
سطر الكود 25: باستخدام كائن الطلب، نحصل على اسم الخادم.
سطر الكود 27: باستخدام كائن الطلب، نحصل على منفذ الخادم.
سطر الكود 29-35: باستخدام كائن الطلب، نحصل على أسماء الرؤوس التي تظهر على شكل تعداد، وبالتالي نحصل على جميع قيم الرؤوس في أسماء الرؤوس.
في هذا، نحصل على جميع قيم الرأس كـ a كوكي، المضيف، الاتصال، قبول اللغة، قبول الترميز.
عند تنفيذ الكود أعلاه، ستحصل على الناتج التالي:
الناتج:
نحصل على سلسلة من القيم مثل اسم الجلسة واسم اللغة واسم المسار واسم الخادم واسم المنفذ والمضيف ومسار السياق وجميع قيم الرأس لذلك JSP.
استجابة خادم JSP
- عندما تتم معالجة الطلب ثم يتم إنشاء الاستجابة من خادم الويب. ويتكون من سطر الحالة ورؤوس الاستجابة وسطرًا فارغًا ومستندًا.
- إنه كائن HTTPServletResponseclass، وهو كائن استجابة.
- سطر الحالة هو نسخة من HTML.
رؤوس الاستجابة في JSP
رؤوس الاستجابة في JSP مذكورة أدناه:
| رأس | الوصف |
|---|---|
| السماح | وهو يحدد طرق الطلب مثل GET وPOST التي يطلبها الخادم |
| التحكم ذاكرة التخزين المؤقت | يمكن تخزين مستند الاستجابة مؤقتًا. يمكن أن تكون عامة وخاصة ولا تحتوي على ذاكرة تخزين مؤقت. لا توجد ذاكرة تخزين مؤقت تحدد أنه لا ينبغي تخزين هذا المستند مؤقتًا |
| الاتصال | فهو يرشدك إلى ما إذا كان يجب على المتصفح استخدام اتصالات HTTP المحفوظة أم لا. تمثل قيمة الإغلاق أن المتصفح يجب ألا يستخدم الاتصالات المستمرة في HTTPConnections ويعني "البقاء على قيد الحياة" استخدام الاتصالات المستمرة |
| التصرف في المحتوى | لسؤال المستخدم ما إذا كان سيتم حفظ الاستجابة على القرص أم لا |
| ترميز المحتوى | يجب ترميز الصفحة أثناء الإرسال |
| طول المحتوى | عدد البايتات في الاستجابة |
| نوع المحتوى | يحدد نوع الاستجابة MIME |
| تنتهي | يحدد الوقت الذي يجب فيه اعتبار المحتوى قديمًا ويجب عدم تخزينه مؤقتًا |
| آخر تعديل | يشير إلى تاريخ آخر تعديل للمستند |
| الموقع | يجب تضمينه مع جميع الردود التي تحتوي على رمز الحالة الذي يحتوي على 300 كرمز حالة |
| تحديث | فهو يحدد كيفية العثور على الصفحة المحدثة. |
| إعادة المحاولة بعد | يمكن استخدامه مع استجابة 503 لإخبار العميل بمدى سرعة تكرار الطلب |
| تعيين ملف تعريف الارتباط | يحدد ملف تعريف الارتباط المرتبط بالصفحة |
أساليب رأس استجابة HTTP في JSP
فيما يلي الطرق في JSP باستخدام كائن الاستجابة:
- سلسلة encodeRedirectURL (سلسلة URL) – يشفر عنوان URL بطريقة redirectURL.
- ترميز السلسلة (URL لسلسلة) - يقوم بتشفير عنوان URL من خلال تضمين معرف الجلسة.
- يحتوي المنطق المنطقي على رأس (اسم السلسلة) - أنه يحتوي على رأس في JSP أم لا.
- منطقية ملتزمة () - تم الرد أم لا.
- Void addCookie(Cookie cookie) - يضيف ملف تعريف الارتباط إلى الاستجابة
- باطلة addDateHeader (اسم السلسلة، قيمة السلسلة) - يضيف اسم تاريخ رأس الاستجابة وقيمتها
- باطلة addHeader (اسم السلسلة، قيمة السلسلة) - يضيف رأس الاستجابة بالاسم والقيمة
- باطلة addIntHeader (اسم السلسلة، قيمة int) - يضيف رأس الاستجابة بالاسم وقيمة العدد الصحيح
- تدفق باطلBuffer() - يجبر المحتوى الموجود في المخزن المؤقت على الإخراج إلى العميل.
- إعادة تعيين باطلة () - مسح البيانات الموجودة في المخزن المؤقت.
- إعادة تعيين باطلةBuffer - يقوم بمسح مخزن المحتوى في الاستجابة دون مسح رموز الحالة.
- خطأ إرسال باطلة (intsc، Stringmsg) - يرسل استجابة خطأ إلى العميل باستخدام رمز الحالة.
- باطلة sendRedirect (موقع السلسلة) - يرسل استجابة إعادة توجيه مؤقتة إلى العميل.
- مجموعة باطلةBufferالحجم (الحجم الدولي) – يحدد حجم المخزن المؤقت للجسم
- Void setCharacterEncoding(مجموعة أحرف السلسلة) - يحدد ترميز الأحرف
- مجموعة VoidContentType (نوع السلسلة) – يحدد نوع محتوى الاستجابة
- مجموعة باطلةContentLength(intlen) – يضبط طول محتوى الاستجابة
- مجموعة باطلة (اللغة المحلية LCL) – يحدد نوع اللغة للاستجابة
- حالة الفراغ (intsc) - يضبط رمز الحالة للاستجابة
على سبيل المثال:
في هذا المثال، سنقوم بتغطية طرق مختلفة وهي getLocale،flushbuffer،getWriter،get ContentType،setIntHeader.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
// Set refresh,autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
//Get current time
Date dt = new Date();
out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>
شرح الكود:
سطر الكود 13: باستخدام كائن الاستجابة، نحصل على كائن محلي لجلسة JSP هذه
سطر الكود 15: باستخدام كائن الاستجابة، يتم استخدام flushbuffer لفرض محتوى المخزن المؤقت على العميل
سطر الكود 16: باستخدام كائن الاستجابة، نحصل على كائن الكاتب الذي يحصل على الإخراج في دفق الإخراج
كود السطر 18: باستخدام كائن الاستجابة، نحصل على نوع المحتوى، أي نوع MIME لكائن الاستجابة
سطر الكود 21: باستخدام كائن الاستجابة، يتم استخدامه للتحميل التلقائي كل 5 ثوانٍ حيث يتم تعيين 5 كمعلمة ثانية
عند تنفيذ الكود أعلاه، ستحصل على الناتج التالي:
الإخراج:
- هنا نحصل على الإخراج لأن هذا من كائن كاتب من getWriter، والذي يعطينا كائنًا ويمكننا إخراجه في دفق الإخراج.
- نحصل على اللغة كـ en_us ونوع المحتوى كنص/html
- نحصل على مجموعة الأحرف كـ ISO 8859
- تاريخ اليوم هو التاريخ الحالي.
رموز حالة JSP HTTP
- عند معالجة الطلب، يتم إنشاء الاستجابة. يتكون سطر حالة الاستجابة من إصدار HTTP ورمز الحالة والرسالة المرتبطة.
- ترتبط الرسالة مباشرة برمز الحالة وإصدار HTTP، ويتم تحديدها بواسطة الخادم.
- افتراضيًا، يتم تعيين 200 كرمز حالة في JSP، لذلك لا نحتاج إلى تعيينه بشكل صريح.
- يمكننا تعيينها كطريقة Response.setStatus()
تنقسم الرموز إلى الفئات الخمس التالية:
- 100-199 - يشير العميل هنا إلى أنه يجب عليه الرد ببعض الإجراءات
- 200-299 - يدل على نجاح الطلب
- 300-399 - يتم استخدامها للملفات التي تم نقلها وعادةً ما تتضمن رأس موقع يشير إلى العنوان الجديد
- 400-499 - يشير إلى خطأ من قبل العميل
- 500-599 - يشير إلى خطأ من جانب الخادم
بعض رموز الحالة الشائعة موجودة أدناه:
- 200 - يشير إلى أن كل شيء على ما يرام
- 301 – انتقلت إلى الأبد
- 304 – لم يتم تعديله منذ آخر تغيير
- 400 طلب سىء
- 404 - غير موجود
- 405 - لم يتم العثور على الطريقة
- 500 - خطأ خادم داخلي
- 503 الخدمة غير متوفرة
- 505 - إصدار HTTP غير مدعوم
طرق رمز حالة HTTP في JSP
بعض طرق رمز الحالة في JSP مذكورة أدناه:
- مجموعة الفراغ العام (intstatusCode): يحدد رمز الحالة الذي نريد تعيينه في صفحة JSP. سيعطينا هذا رسالة رمز الحالة الذي تم تعيينه
- إرسال الفراغ العام (عنوان URL لسلسلة): يقوم بإنشاء استجابة 302 مع رأس الموقع الذي يعطي عنوان URL للمستند الجديد
- خطأ إرسال الفراغ العام (intcode، Stringmsg): يرسل رمز الحالة مع الرسالة القصيرة ويتم تنسيقه داخل مستند HTML.
على سبيل المثال:
في هذا المثال، نقوم بإرسال خطأ إلى صفحة JSP بشكل صريح.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
شرح الكود:
سطر الكود 10: باستخدام كائن الاستجابة، نرسل الخطأ إلى صفحة تحتوي على معلمتين.
- رمز الحالة - يمكن أن يكون أيًا مما سبق. في هذه الحالة، وصفنا بـ 404
- الرسالة - يمكن أن تكون أي رسالة محددة نريد إظهار الخطأ فيها
إذا قمت بتنفيذ الكود أعلاه، فستحصل على الإخراج التالي:
الإخراج:
هنا نحصل على رمز الخطأ 404، والذي تم إرساله من الكود ويعرض أيضًا رسالة "لم يتم العثور على صفحة المعلم" التي تظهر في الإخراج.
ملخص
- في هذه المقالة، تعرفنا على طلب العميل واستجابة الخادم وكيفية اعتراض الطلب وكيفية التعامل مع الاستجابات.
- إجراءات جي إس بي والتي تستخدم بنيات في بناء جملة XML للتحكم في سلوك محرك servlet.
- عندما يتم طلب صفحة الويب، فإنها ترسل المعلومات إلى خادم الويب في رأس HTTP.
- عندما تتم معالجة الطلب ثم يتم إنشاء الاستجابة من خادم الويب. ويتكون من سطر الحالة ورؤوس الاستجابة وسطرًا فارغًا ومستندًا.
- عند معالجة الطلب، يتم إنشاء الاستجابة. يتكون سطر حالة الاستجابة من إصدار HTTP ورمز الحالة والرسالة المرتبطة.



