Latest web development tutorials

دورة التخطيط الاستراتيجي المشترك

HTTP هو بروتوكول عديمي الجنسية، وهو ما يعني أنه في كل مرة يسترد العميل صفحة، يجب فتح الخادم اتصال منفصل، لا يسجل خادم يطلب العميل السابق أي معلومات.

هناك ثلاث طرق للحفاظ على جلسات عمل العميل والخادم:


بسكويت

قد تعيين خادم الشبكة معرف جلسة عمل فريدة من نوعها لارتباط لتمثيل كل عميل لتحديد الطلب التالي العميل.

هذا قد لا يكون وسيلة فعالة، لأنه في الكثير من الأحيان لا تؤيد بالضرورة الكعكة المتصفح، لذلك نحن لا نوصي باستخدام هذه الطريقة للحفاظ على الدورة.


حقول النموذج المخفية

خادم الويب يمكن أن ترسل خفية على حقول النموذج HTML ومعرف جلسة عمل فريدة من نوعها، مثل هذا:

<input type="hidden" name="sessionid" value="12345">

هذا الدخول يعني أنه عندما يتم إرسال النموذج، الاسم المحدد وقيمة ستدرج تلقائيا في البيانات GET أو POST. عندما يرسل المتصفح الطلب، ويمكن استخدام قيمة SESSION_ID لإنقاذ مختلفة مسار المتصفح.

قد يكون هذا النهج وسيلة فعالة، ولكن لا ينتج الحدث استمارة التقديم انقر على <a HREF> التبويب الارتباط التشعبي، وذلك أخفى حقول النموذج لا تدعم تتبع جلسة عامة.


إعادة كتابة URL

يمكنك إضافة بعض البيانات الإضافية وراء كل URL للتمييز الدورة، وفقا لخدمة البيانات يمكن أن تكون مرتبطة معرف الدورة.

على سبيل المثال http: //w3cschool.cc/file.htm، جلسة الهوية = 12345، معرف جلسة جلسة الهوية = 12345، ويمكن استخدام الخادم هذه البيانات لتحديد العميل.

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


كائنات جلسة

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

افتراضيا، JSP يسمح تتبع الدورة، سوف كائن HttpSession الجديد تلقائيا للعميل جديد مثيل. يحتاج تتبع جلسة حظر لتحويله بشكل واضح من قبل الدورة موجها الصفحة قيمة السمة إلى false لتحقيق، على النحو التالي:

<%@ page session="false" %>

يتعرض محرك JSP كائن جلسة الضمنية للمطور. من خلال توفير كائن جلسة، يمكن للمطورين تخزين بسهولة أو استرجاع البيانات.

يسرد الجدول التالي بعض من وجوه جلسة طرق مهم:

SN طريقة ووصف
1 العام كائن getAttribute (اسم سلسلة)

الكائن عاد جلسة كائن منضم مع اسم محدد، أو لاغية في حال عدم وجود
2 getAttributeNames التعداد العام ()

إرجاع كائن جلسة عن أسماء الكائنات
3 getCreationTime طويلة الجمهور ()

إرجاع يتم إنشاء كائن جلسة وقت، في أجزاء من الثانية، اعتبارا من 1 يناير 1970 تاريخ الصباح الباكر
4 جمهور سلسلة getId ()

إرجاع معرف كائن جلسة
5 getLastAccessedTime طويلة الجمهور ()

ترجع آخر مرة زار العميل، في أجزاء من الثانية، اعتبارا من 1 يناير 1970 تاريخ الصباح الباكر
6 getMaxInactiveInterval كثافة الجمهور ()

يعود أقصى فترة زمنية، في ثوان، وحاوية بريمج إبقاء الدورة مفتوحة في هذا الوقت
7 الفراغ العام يبطل ()

إبطال الدورة، تفكيك أي كائنات متجهة إلى الدورة
8 منطقية العام isNew (

يعود ما إذا كان عميل جديد، أو إذا رفض العميل للانضمام الدورة
9 removeAttribute الفراغ الجمهور (اسم سلسلة)

إزالة الدورة اسم الكائن المحدد
10 على SetAttribute باطلة العامة (اسم سلسلة، كائن قيمة)

لإنتاج كائن ذو الاسم المحدد وقيمة وملزمة للدورة
11 setMaxInactiveInterval الفراغ الجمهور (الفترة كثافة العمليات)

لتحديد الوقت، في ثوان، وحاوية بريمج حفاظ على الدورة صالحة خلال هذه الفترة

JSP تطبيق الدورة

يصف هذا المثال كيفية استخدام الكائن HttpSession للحصول على الوقت وخلق آخر وقت الوصول. سنكون كائن جلسة عمل جديدة للكائن طلب المرتبطة بها، إذا لم يكن هذا الكائن غير موجود بالفعل.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<%
   // 获取session创建时间
   Date createTime = new Date(session.getCreationTime());
   // 获取最后访问页面的时间
   Date lastAccessTime = new Date(session.getLastAccessedTime());

   String title = "再次访问本教程实例";
   Integer visitCount = new Integer(0);
   String visitCountKey = new String("visitCount");
   String userIDKey = new String("userID");
   String userID = new String("ABCD");

   // 检测网页是否由新的访问用户
   if (session.isNew()){
      title = "访问本教程实例";
      session.setAttribute(userIDKey, userID);
      session.setAttribute(visitCountKey,  visitCount);
   } else {
	   visitCount = (Integer)session.getAttribute(visitCountKey);
	   visitCount += 1;
	   userID = (String)session.getAttribute(userIDKey);
	   session.setAttribute(visitCountKey,  visitCount);
   }
%>
<html>
<head>
<title>Session 跟踪</title>
</head>
<body>

<h1>Session 跟踪</h1>

<table border="1" align="center"> 
<tr bgcolor="#949494">
   <th>Session 信息</th>
   <th>值</th>
</tr> 
<tr>
   <td>id</td>
   <td><% out.print( session.getId()); %></td>
</tr> 
<tr>
   <td>创建时间</td>
   <td><% out.print(createTime); %></td>
</tr> 
<tr>
   <td>最后访问时间</td>
   <td><% out.print(lastAccessTime); %></td>
</tr> 
<tr>
   <td>用户 ID</td>
   <td><% out.print(userID); %></td>
</tr> 
<tr>
   <td>访问次数</td>
   <td><% out.print(visitCount); %></td>
</tr> 
</table> 
</body>
</html>

محاولة للوصول إلى HTTP: // المضيف المحلي: 8080 / testjsp / الإنجليزية main.jsp، سوف الجولة الأولى الحصول على النتائج التالية:

زيارة مرة أخرى، سوف نحصل على النتائج التالية:


حذف بيانات الدورة

عند الانتهاء من معالجة البيانات جلسة عمل مستخدم، لديك الخيارات التالية:

  • إزالة خاصية محددة:

    استدعاء removeAttribute الفراغ الجمهور (اسم سلسلة) طريقة لإزالة الخاصية المحددة.

  • لحذف المحادثة بأكملها:

    استدعاء الأسلوب باطل العام يبطل () لجعل الدورة كلها غير صالحة.

  • تحديد مدة الجلسة:

    استدعاء الأسلوب باطل العام setMaxInactiveInterval (الفترة كثافة العمليات) لتعيين مهلة الدورة.

  • توقيع العضو:

    Servlet2.4 الإصدارات من الخادم، يمكنك الاتصال خروج () طريقة للخروج المستخدم وكل جلسة العمل المقترنة غير صالح.

  • Web.xml ملف التكوين:

    إذا كنت تستخدم قط، يمكنك تكوين ملف web.xml لما يلي:

  <session-config>
    <session-timeout>15</session-timeout>
  </session-config>

المهلة في دقائق، القط المهلة الافتراضية هي 30 دقيقة.

بريمج في طريقة getMaxInactiveInterval () إرجاع الثواني المهلة. إذا تم تكوين web.xml لمدة 15 دقيقة، والطريقة ثم getMaxInactiveInterval () عودة 900.