يمثل كائن HttpServletRequest طلب العميل. عندما يصل العميل إلى الخادم من خلال بروتوكول HTTP، يتم تغليف جميع المعلومات الموجودة في رأس طلب HTTP في هذا الكائن. يمكن للمطورين الحصول على معلومات العميل من خلال طرق هذا الكائن.
طرق الطلب الشائعة :
1. الطرق الشائعة للحصول على معلومات بيئة العميل :
1. تقوم طريقة getRequestURL بإرجاع عنوان URL الكامل عندما يقوم العميل بتقديم الطلب.
2. تقوم طريقة getRequestURI بإرجاع جزء اسم المورد في سطر الطلب.
3. تقوم طريقة getQueryString بإرجاع جزء المعلمة من سطر الطلب.
4. تقوم طريقة getRemoteAddr بإرجاع عنوان IP الخاص بالعميل الذي قدم الطلب.
5. تقوم طريقة getRemoteHost بإرجاع اسم المضيف الكامل للعميل الذي قدم الطلب.
6. تقوم طريقة getRemotePort بإرجاع رقم منفذ الشبكة الذي يستخدمه العميل.
7. تقوم طريقة getLocalAddr بإرجاع عنوان IP الخاص بخادم الويب.
8. تقوم طريقة getLocalName بإرجاع اسم المضيف لخادم الويب.
9.getMethod يحصل على طريقة طلب العميل.
انسخ رمز الكود كما يلي:
الحزمة com.yyz.request؛
import java.io.IOException;
استيراد java.io.OutputStream؛
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
الطبقة العامة RequestDemo تمتد HttpServlet {
doGet الفراغ العام (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
/**
*عنوان URL هو مجموعة فرعية من URI.
* يتم استخدام URI لتحديد المورد.
*يُستخدم عنوان URL لتحديد أحد الموارد على الإنترنت.
*/
System.out.println(request.getRequestURL());//احصل على عنوان URL للطلب
System.out.println(request.getRequestURI());// احصل على المورد المطلوب
System.out.println(request.getQueryString());
System.out.println(request.getRemoteAddr());//احصل على IP للزائر
System.out.println(request.getRemoteHost());
// نظرًا لأنه غير مسجل في نظام أسماء النطاقات، فإن نتيجة الطباعة لا تزال 127.0.0.1. إذا وصل بايدو إلى هذا البرنامج، فاطبع www.baidu.com
System.out.println(request.getRemotePort());// احصل على المورد المطلوب
System.out.println(request.getMethod());//احصل على المورد المطلوب
}
doPost باطلة عامة (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
doGet(request,response);
}
}
أدخل: http://localhost:8080/test/servlet/RequestDemo في شريط عنوان المتصفح ويكون إخراج الخلفية كما يلي:
2. الحصول على رأس طلب العميل :
1.طريقة getHeader (اسم السلسلة).
2.طريقة getHeaders (اسم السلسلة).
3.طريقة getHeaderNames()
انسخ رمز الكود كما يلي:
الحزمة com.yyz.request؛
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// احصل على رؤوس الطلب
الطبقة العامة RequestDemo تمتد HttpServlet {
doGet الفراغ العام (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
String head = request.getHeader("Accept-Encoding");
// بعض المتصفحات لا تدعم البيانات المضغوطة
إذا(head.contains("gzip")){
// إخراج البيانات المضغوطة
}آخر{
// إخراج البيانات غير المضغوطة
}
// احصل على جميع قيم الرأس بالاسم المحدد
التعداد e = request.getHeaders("Accept-Encoding");
بينما(e.hasMoreElements()){
قيمة السلسلة = (String) e.nextElement();
System.out.println(value);
}
System.out.println("-----------------------");
// احصل على جميع الرؤوس والقيم
e = request.getHeaderNames();
بينما(e.hasMoreElements()){
اسم السلسلة = (سلسلة)e.nextElement();
قيمة السلسلة = request.getHeader(name);
System.out.println(name+"="+value);
}
}
doPost باطلة عامة (طلب HttpServletRequest، استجابة HttpServletResponse)
يلقي ServletException، IOException {
doGet(request,response);
}
}
قم بالوصول إلى البرنامج في المتصفح ويكون إخراج الخلفية كما يلي:
3. الحصول على معلمات طلب العميل (البيانات المقدمة من قبل العميل):
1.طريقة getParameter(name).
2.طريقة getParameterValues(اسم السلسلة).
3.طريقة getParameterNames
4.طريقة getParameterMap، تُستخدم على نطاق واسع عند إنشاء الإطارات
package com.yyz.request; import java.io.IOException; import java.util.Enumeration; import java.util.Map.Entry; .HttpServlet; import javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; // احصل على بيانات الطلب public class RequestDemo Extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse Response) throws ServletException, IOException { //http://localhost:8080/test/servlet/RequestDemo? name=yyz String value = request.getParameter("name"); System.out .println(value); //http://localhost:8080/test/servlet/RequestDemo?like=sing&like=dance String likes[] = request.getParameterValues("like"); ){ for(String like : likes){ System.out.println(like); // فيما يلي طريقة احترافية لكتابة هذا النوع من الاجتياز، وهي طريقة للحصول على بيانات المصفوفة (لتجنب استثناءات المؤشر الفارغ) for(int i=0;likes!=null&&i<likes.length;i++){ System.out .println(likes[ i]); } // احصل على جميع الأسماء واحصل على القيمة بناءً على الاسم Enumeration e = request.getParameterNames(); while(e.hasMoreElements()){ String name = (String) e.nextElement(); value = request.getParameter(name); ---------"); // احصل على مجموعة الخرائط المستخدمة لتغليف البيانات في كائن الطلب Map<String,String[]> Map = request.getParameterMap(); for(Entry<String, String[ ]> me :map.entrySet()){ اسم السلسلة = me.getKey(); String [] v = me.getValue(); { doGet(طلب,استجابة } })