English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

طلبات العميل JSP

عندما يطلب المتصفح صفحة من الويب، يرسل سلسلة من المعلومات التي لا يمكن قراءتها مباشرة إلى خادم الشبكة، لأن هذه المعلومات هي جزء من رأس HTTP المرسل. يمكنك التحقق من بروتوكول HTTP للحصول على معلومات إضافية.

يظهر الجدول أدناه بعض المحتويات المهمة للمعلومات في رأس المتصفح، التي ستظهر بشكل متكرر في البرمجة الشبكية في المستقبل:

المعلوماتوصف
Accept النوع MIME الذي يمكن لمتصفح الويب أو العملاء الآخرين معالجته. قيمته عادة ما تكون image/png أو image/jpeg
Accept-Charset يحدد مجموعة الحروف التي سيستخدمها المتصفح. على سبيل المثال، ISO-8859-1
Accept-Encoding يحدد نوع الت编码. عادةً ما يكون لهذا القيمة gzip أوcompress
Accept-Language يحدد اللغة المفضلة للعميل، وسيقوم servlet بتقديم مجموعة النتائج المكونة من اللغة الحالية أولاً، إذا كان servlet يدعم هذه اللغة. على سبيل المثال، en،en-us،ru، إلخ.
Authorization يُستخدم لتحديد المستخدمين المختلفين عند زيارة صفحات الويب المحمية بكلمة المرور
Connection يوضح ما إذا كان العميل يمكنه التعامل مع الاتصال الدائم. يسمح الاتصال الدائم للعميل أو المتصفح بجلب عدة ملفات في طلب واحد.Keep-Alive يعني تمكين الاتصال الدائم
Content-Length يُستخدم فقط في طلبات POST، ويشير إلى عدد بيانات POST
Cookie يعيد الكوكيز التي تم إرسالها سابقًا إلى الخادم
Host يعطي اسم النطاق ورقم المنفذ في URL الأصلي
If-Modified-Since يوضح أن العميل يحتاج إلى صفحة الويب هذه فقط إذا تم تعديلها في تاريخ معين. يرسل الخادم رمز 304 إلى العميل، مما يعني أن لا يوجد موارد تم تعديلها
If-Unmodified-Since عكس If-Modified-Since، فقط إذا لم يتم تعديل المستند بعد تاريخ معين، فإن العمل سيتم بنجاح
Referer يعبر عن عنوان URL للصفحة المشار إليها. على سبيل المثال، إذا كنت في صفحة 1 ثم ضغطت على رابط إلى صفحة 2، فإن عنوان URL لصفحة 1 سيكون جزءًا من معلومات الرأس التي يقدمها المتصفح لصفحة 2.
User-Agent لتمييز بين طلبات مختلفة من المتصفحات أو العملاء، وإعادة توجيه محتوى مختلف بناءً على نوع المتصفح.

فئة HttpServletRequest

يعد مكتبة request مثالاً على فئة javax.servlet.http.HttpServletRequest. كلما قدم العميل طلبًا لصفحة، يولد محرك JSP مكتبة جديدة تمثل هذا الطلب.

يقدم مكتبة request مجموعة من الطرق لاستخراج معلومات الرأس HTTP، بما في ذلك بيانات النموذج، الكوكيز، طريقة HTTP، إلخ.

سيتم تقديم بعض الطرق الشائعة لاستخراج معلومات الرأس HTTP في برمجة JSP. لمزيد من التفاصيل، راجع الجدول التالي:

الرقمالطريقة& وصف
1Cookie[] getCookies() تقديم مصفوفة تحتوي على جميع الكوكيز للعميل
2Enumeration getAttributeNames() يعود مجموعة جميع أسماء الخاصيات للـ request object
3Enumeration getHeaderNames() يعود مجموعة جميع عناوين الرؤوس HTTP
4Enumeration getParameterNames() يعود مجموعة جميع المعامل في الطلب
5HttpSession getSession() يعود موضوع الـ session المتباين مع الطلب، إذا لم يكن موجودًا فيقوم بإنشاء واحد
6HttpSession getSession(boolean create) يعود موضوع الـ session المتباين مع الطلب، إذا لم يكن موجودًا ويكون المفسر create صحيحًا، فيعطى موضوع session جديد
7Locale getLocale() يعود موضوع الـ Locale الحالي، يمكن تعيينه في الـ response
8Object getAttribute(String name) يعود قيمة الخاصية المحددة باسمها، إذا لم تكن موجودة فيعطى null.
9ServletInputStream getInputStream() يعود تدفق الدخول للطلب
10String getAuthType() يعود اسم خطة التحقق، المستخدمة لحماية servlet،مثل "BASIC" أو "SSL" أو null إذا لم يضبط JSP إجراء الحماية
11String getCharacterEncoding() يعود اسم مجموعة الترميز للطلب
12String getContentType() يعود نوع MIME لمحتوى الطلب، إذا لم يكن معروفًا فيعطى null
13String getContextPath() يعود مسار الـ URI المحدد بالسياق في الطلب
14String getHeader(String name) يعود عنوان المعلومات المحدد باسمه
15String getMethod() يعود طريقة HTTP هذا الطلب، مثل GET،POST،أوPUT
16String getParameter(String name) يعود المعامل المحدد باسمه في هذا الطلب، إذا لم يكن موجودًا فيعطى null
17String getPathInfo() يعود أي مسار إضافي مرتبط بعنوان URL هذا الطلب
18String getProtocol() يعود اسم البروتوكول والمساحة الإصدار المستخدمة في هذا الطلب
19String getQueryString() رشته جستجو را که در URL درخواست شده شامل است، باز می‌گرداند
20String getRemoteAddr() آدرس IP کاربر را باز می‌گرداند
21String getRemoteHost() نام کامل کاربر را باز می‌گرداند
22String getRemoteUser() نام کاربری را که از طریق احراز هویت شده است، باز می‌گرداند، اگر کاربری احراز هویت نشده باشدnull باز می‌گرداند
23String getRequestURI() URI درخواست شده را باز می‌گرداند
24String getRequestedSessionId() شناسه session درخواست شده را باز می‌گرداند
25String getServletPath() مسیر servlet درخواست شده را باز می‌گرداند
26String[] getParameterValues(String name) تمام مقادیر پارامتر به نام مشخص شده را باز می‌گرداند، اگر وجود نداردnull باز می‌گرداند
27boolean isSecure() مطمئن می‌شود که درخواست از کانال رمزنگاری شده استفاده کرده است، مانند HTTPS
28int getContentLength() تعداد بایت‌های شامل در بدنه درخواست را باز می‌گرداند، اگر ناشناخته باشد-1 باز می‌گرداند
29int getIntHeader(String name) مقدار سرور اطلاعات سرور به نام مشخص شده را باز می‌گرداند
30int getServerPort() پورت سرور را باز می‌گرداند

مثال اطلاعات سرور HTTP

در این مثال، ما از روش getHeaderNames() کلاس HttpServletRequest برای خواندن اطلاعات سرور HTTP استفاده خواهیم کرد. این روش اطلاعات سرور HTTP فعلی را به صورت انجمن باز می‌گرداند.

بعد از دریافت اشیاء Enumeration، به روش استاندارد از اشیاء Enumeration مرور می‌کنیم، برای تعیین زمان توقف از روش hasMoreElements() استفاده می‌کنیم و برای دریافت نام هر پارامتر از روش nextElement() استفاده می‌کنیم.

<%@ 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>مثال على طلب رأس HTTP</h2>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>اسم الرأس</th><th>قيمة(قيم) الرأس</th>
</tr>
<%
   Enumeration headerNames = request.getHeaderNames();
   while(headerNames.hasMoreElements()) {
      String paramName = (String)headerNames.nextElement();
      out.print("<tr><td>" + paramName + "</td>\n");
      String paramValue = request.getHeader(paramName);
      out.println("<td> " + paramValue + "</td></tr>\n");
   }
%>
</table>
</body>
</html>

بزيارة main.jsp، ستحصل على النتيجة التالية:

يمكنك تجربة طرق أخرى من HttpServletRequest في الكود أعلاه.