logo

فئة Javax.servlet.http.Cookie في جافا

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

كيف تعمل ملفات تعريف الارتباط؟

كيف تعمل ملفات تعريف الارتباط؟' title= كما يتضح من الرسم البياني أعلاه، عندما يطلب المستخدم لأول مرة صفحة ما، يرسل الخادم مع المورد كائن ملف تعريف الارتباط ليتم تخزينه على جهاز العميل. قد يحتوي هذا الكائن على تفاصيل الطلب. الآن لاحقًا، إذا طلب المستخدم مرة أخرى نفس المورد، فإنه يرسل مع الطلب ملف تعريف الارتباط المخزن والذي يمكن استخدامه بواسطة الخوادم لتعزيز تجربة المستخدم. سمات ملف تعريف الارتباط:
    الاسم = زوج القيمة:وهذا يصور المعلومات الفعلية المخزنة داخل ملف تعريف الارتباط. يجب ألا يحتوي الاسم أو القيمة على مسافة بيضاء أو أي من الأحرف التالية: [ ] ( ) = ' / ؟ @ : ; مثال لزوج اسم وقيمة ملف تعريف الارتباط الصالح:
     Set-Cookie:session-id = 187-4969589-3049309
    اِختِصاص: By default a cookie applies to the server it came from. If a cookie is originally set by www.foo.example.com the browser will only send the cookie back to www.foo.example.com. However a site can also indicate that a cookie applies within an entire subdomain not just at the original server. For example this request sets a user cookie for the entire foo.example.com domain: The browser will echo this cookie back not just to www.foo.example.com but also to lothar.foo.example.com eliza.foo.example.com enoch.foo.example.com and any other host somewhere in the foo.example.com domain. However a server can only set cookies for domains it immediately belongs to. www.foo.example.com cannot set a cookie for www.geeksforgeeks.org example.com or .com no matter how it sets the domain.
     Set-Cookie: user = geek ;Domain =.foo.example.com
    طريق: When requesting a document in the subtree from the same server the client echoes that cookie back. However it does not use the cookie in other directories on the site.
    Set-Cookie: user = geek; Path =/ restricted
    تنتهي : The browser should remove the cookie from its cache after that date has passed.
     Set-Cookie: user = geek; expires = Wed 21-Feb-2017 15:23:00 IST
    الحد الأقصى للعمر : This attribute sets the cookie to expire after a certain number of seconds have passed instead of at a specific moment. For instance this cookie expires one hour (3600 seconds) after it’s first set.
    Set-Cookie: user = 'geek'; Max-Age = 3600
منشئ : Creates a cookie with specified name-value pair.
  Syntax :   public Cookie(String name String value)   Parameters :   name : name of the cookie value : value associated with this cookie 
طُرق :
    مجموعة المجال () : Sets the domain in which this cookie is visible. Domains are explained in detail in the attributes of cookie part previously.
      Syntax :   public void setDomain(String pattern)   Parameters :   pattern : string representing the domain in which this cookie is visible.
    الحصول على المجال () : Returns the domain in which this cookie is visible.
      Syntax :   public String getDomain()
    مجموعة التعليق () : Specifies the purpose of this cookie.
      Syntax :   public void setComment(String purpose)   Parameters :   purpose : string representing the purpose of this cookie.
    الحصول على التعليق () : Returns the string representing purpose of this cookie.
      Syntax :   public String getComment()
    سيتماكساج () : Specifies the time (in seconds) elapsed before this cookie expires.
      Syntax :   public void setMaxAge(long time)   Parameters :   time : time in seconds before this cookie expires
    الحصول على ماكساجي () : Returns the max age component of this cookie.
      Syntax :   public String getMaxAge()
    مجموعة المسار () : Specifies a path for the cookie to which the client should return the cookie.
      Syntax :   public void setPath(String path)   Parameters :   path : path where this cookie is returned
    الحصول على المسار () : Returns the path component of this cookie.
      Syntax :   public String getMaxAge()
    سيتسيكور () : Indicated if secure protocol to be used while sending this cookie. Default value is false.
      Syntax :   public void setSecure(boolean secure)   Parameters:   secure - If true the cookie can only be sent over a secure protocol like https. If false it can be sent over any protocol.
    الحصول على الأمان () : Returns true if this cookie must be sent by a secure protocol otherwise false.
      Syntax :   public boolean getSecure()
    الحصول على الاسم () : Returns the name of the cookie.
       Syntax :   public String getName()
    قيمة المجموعة () : Assigns new value to cookie after initialisation.
      Syntax :   public void setValue(String newValue)   Parameters :   newValue - a String specifying the new value
    الحصول على القيمة : Returns the value of the cookie.
      Syntax :   public String getValue()
    الحصول على النسخة () : Returns 0 if the cookie complies with the original Netscape specification; 1 if the cookie complies with RFC 2965/2109
      Syntax :   public int getVersion()
    مجموعة الإصدار () : Used to set the version of the cookie protocol this cookie uses.
      Syntax :  public void setVersion(int v)   Parameters :   v - 0 for original Netscape specification; 1 for RFC 2965/2109 
    استنساخ () : returns a copy of this cookie.
      Syntax :   public Cookie clone()
Below is a Java implementation of a simple servlet program which stores a cookie in the browser when user first requests for it and then for further requests it displays the cookies stored. Java
// Java program to illustrate methods // of Cookie class import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /**  * Servlet implementation class cookieTest  */ @WebServlet('/cookieTest') public class cookieTest extends HttpServlet  {  private static final long serialVersionUID = 1L;  /**  * @see HttpServlet#HttpServlet()  */  public cookieTest() {  super();  // TODO Auto-generated constructor stub  }  /**  * @see HttpServlet#doGet(HttpServletRequest request HttpServletResponse  * response)  */  protected void doGet(HttpServletRequest request HttpServletResponse response)  throws ServletException IOException   {  response.setContentType('text/html');  // Create a new cookie with the name test cookie  // and value 123  Cookie cookie = new Cookie('test_cookie' '123');  // setComment() method  cookie.setComment('Just for testing');  // setDomain() method  // cookie.setDomain('domain');  // setMaxAge() method  cookie.setMaxAge(3600);  // setPath() method  cookie.setPath('/articles');  // setSecure() method  cookie.setSecure(false);  // setValue() method  cookie.setValue('321');  // setVersion() method  cookie.setVersion(0);  response.addCookie(cookie);  PrintWriter pw = response.getWriter();  pw.print('  ');  Cookie ck[] = request.getCookies();  if (ck == null) {  pw.print('

This is first time the page is requested.

'
); pw.print('

And therefore no cookies found



'
); } else { pw.print('

Welcome Again...Cookies found

'
); for (int i = 0; i < ck.length; i++) { // getName() method pw.print('

Name :' + ck[i].getName() + '

'
); // getValue() method pw.print('

Value :' + ck[i].getValue() + '

'
); // getDomain() method pw.print('

Domain :' + ck[i].getDomain() + '

'
); // getPath() method pw.print('

Name :' + ck[i].getPath() + '

'
); // getMaxAge() method pw.print('

Max Age :' + ck[i].getMaxAge() + '

'
); // getComment() method pw.print('

Comment :' + ck[i].getComment() + '

'
); // getSecure() method pw.print('

Name :' + ck[i].getSecure() + '

'
); // getVersion() method pw.print('

Version :' + ck[i].getVersion() + '

'
); } pw.print(' '); } pw.close(); } /** * @see HttpServlet#doPost(HttpServletRequest request HttpServletResponse * response) */ protected void doPost(HttpServletRequest request HttpServletResponse response) throws ServletException IOException { doGet(request response); } }
الإخراج: الإخراج التالي من متصفح الويب- بالنسبة للطلب الأول:
This is first time the page is requested. And therefore no cookies found.
بالنسبة للطلب الثاني:
Welcome Again...Cookies found Name :test_cookie Value :321 Domain :null Name :null Max Age :-1 Comment :null Name :false Version :0

كيفية تشغيل البرنامج أعلاه؟

تأكد أولاً من تثبيت خادم مثل Apache Tomcat وتهيئته باستخدام الأداة التي تستخدمها مثل Eclipse. ما عليك سوى تشغيل البرنامج أعلاه على الخادم أو على متصفحك المحلي عن طريق وضع العنوان الكامل لدليل الخادم الذي تستخدمه. إن CookieTest servlet هو servlet الذي يقوم بثلاث مهام:
  1. أولاً، يقوم servlet بتعيين ملف تعريف الارتباط بالاسم test_cookie. تقوم الأسطر الأخرى في البرنامج بتعيين سمات ملف تعريف الارتباط مثل الحد الأقصى لقيمة المجال العمري وما إلى ذلك.
  2. ثانيًا، يستخدم servlet request.getCookies للعثور على كافة ملفات تعريف الارتباط الواردة وعرض أسمائها والسمات الأخرى المقابلة لها.
  3. إذا لم يتم العثور على ملفات تعريف الارتباط كما هو الحال مع الطلب الأول، فسيتم عرض رسالة عرض بسيطة تخبرنا بأنها الزيارة الأولى للصفحة.
مرجع: وثائق جافا الرسمية إنشاء اختبار