صفحة الترحيب Welcome.jsp
عندما يقوم المستخدم بإدخال كلمة المرور الصحيحة، يتحكم Switch.jsp في صفحة JSP لتوجيه صفحة الترحيب Welcome.jsp. في هذا القسم، نقوم بتطوير صفحة Welcome.jsp. نظرًا لأن Welcome.jsp يحتاج إلى استخدام مكتبة علامات خارجية، فأنت بحاجة إلى إجراء بعض التكوينات في JBuilder لتقديم مكتبة العلامات هذه قبل تطوير Welcome.jsp.
قم بتكوين مكتبات علامات الطرف الثالث في JBuilder
توفر مؤسسة Apache مفتوحة المصدر العديد من مكتبات العلامات المفيدة. تحتاج صفحة الترحيب Welcome.jsp إلى استخدام مكتبة علامات التاريخ والوقت من Apache. يمكنك استخدام مكتبة العلامات هذه لتوفير عروض زمنية مختلفة في JSP. عنوان التنزيل هو: /u/info_img /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip.
تشتمل مكتبة العلامات بشكل عام على ملفين، أحدهما هو ملف JAR لحزمة الفئة، والآخر هو ملف وصف العلامة ذو الامتداد .tld. بعد فك ضغط الملف المضغوط الذي تم تنزيله، نضع ملفات taglibs-datetime.jar وtaglibs-datetime.tld في الدليل <project Directory>/datetimeTag.
لاستخدام مكتبة علامات تابعة لجهة خارجية في مشروع، يجب عليك تكوين مكتبة العلامات في JBuilder مسبقًا والإشارة إليها في المشروع. يشبه تكوين مكتبات العلامات تكوين مكتبات الفئات، ويتم إجراؤه أيضًا من خلال مربع الحوار تكوين المكتبات. يتم إدراج مكتبة فئة JBuilder ومكتبة العلامات في الشجرة الموجودة على اليسار في مربع الحوار تكوين المكتبات، ويتم عرض مكتبة الفئة على أنها أيقونة، بينما تظهر مكتبة العلامات كـ رمز. بعد ذلك نقوم بتكوين مكتبة علامات التاريخ والوقت في JBuilder.
1. أدوات->تكوين->المكتبات->مربع حوار تكوين المكتبات.
انقر فوق الزر إضافة... الموجود في الزاوية السفلية اليسرى من مربع الحوار تكوين المكتبات ليظهر مربع الحوار معالج المكتبة الجديدة، كما هو موضح أدناه:
الشكل 17: مربع الحوار "معالج المكتبة الجديدة". |
قم بتسمية هذه المكتبة في الاسم: datetimeTag، ثم اضغط على "موافق" للعودة إلى مربع الحوار "تكوين المكتبات".
2. حدد ملف مكتبة العلامات.
بعد العودة إلى مربع الحوار تكوين المكتبات، تظهر عقدة datetimeTag في الشجرة الموجودة على اليسار نظرًا لعدم تحديد ملف مكتبة فئة لها، يتم عرضها باللون الأحمر الواضح على عكس العقد الأخرى. انقر فوق datetimeTag وقم بتبديل صفحة إعداد Library Settings إلى Framework في صفحة علامة التبويب، كما هو موضح أدناه:
الشكل 18: التبديل إلى الإطار |
حدد خيار User-Defined JSP Tag Library في مربع القائمة المنسدلة Framework، وانقر فوق الزر Add... الموجود أسفل يمين صفحة علامة التبويب، وسينبثق مربع الحوار Define New Tag Library، كما هو موضح في الشكل أقل:
الشكل 19: ملف الوصف الذي يحدد مكتبة العلامات |
في مربع الحوار تحديد مكتبة العلامات الجديدة، انقر فوق الزر... بعد ملف TLD وانتقل إلى ملف <دليل المشروع>/datetimeTag/taglibs-datetime.tld بعد التأكيد، يقوم JBuilder تلقائيًا بملء الإعدادات المتبقية هناك ليست هناك حاجة لتغيير إعدادات التجديد التلقائي لـ JBuilder. من بينها، تحدد البادئة بادئة مرجعية لمكتبة العلامات هذه. انقر فوق الزر "موافق" للعودة إلى مربع الحوار "تكوين المكتبات" ويتم عرض عقدة datetimeTag باللون العادي كما هو موضح أدناه:
الشكل 20 التأثير بعد تكوين مكتبة العلامات بشكل صحيح |
انقر فوق الزر "موافق" في مربع الحوار "تكوين المكتبات" لإكمال تكوين مكتبة علامات التاريخ والوقت.
3. قم بالرجوع إلى مكتبة العلامات التي تم تكوينها حديثًا في المشروع الحالي.
المشروع->خصائص المشروع...->المسارات->التبديل إلى علامة التبويب المكتبات المطلوبة->انقر فوق الزر إضافة... لتحديد علامة التاريخ والوقت من مكتبة فئة JBuilder. بعد التكوين الناجح، يبدو مربع الحوار خصائص المشروع كما يلي:
الشكل 21: المكتبة المرجعية للمشروع |
إنشاء صفحة ترحيب JSP
1. ملف->جديد...->ويب->انقر نقرًا مزدوجًا فوق أيقونة JSP لبدء معالج إنشاء JSP، وحدد اسم ملف JSP كمرحب به، ثم انقر فوق "التالي" للمتابعة إلى الخطوة التالية.
2. قم بالرجوع إلى مكتبة علامات datetimeTag في صفحة Welcome.jsp.
في الخطوة 2 من المعالج، يُسمح لك بتحديد مكتبات العلامات المختلفة في JBuilder. تظهر أيضًا مكتبة علامات datetimeTag التي قمنا بتكوينها في القسم السابق في قائمة مكتبات العلامات، كما هو موضح في الشكل التالي:
الشكل 22: مكتبة العلامات المرجعية |
قم بتوسيع علامة التاريخ والوقت وتحقق من taglibs-datetime، ثم انقر فوق التالي للانتقال إلى الخطوة التالية.
3. قم بالإشارة إلى كائن userBean الموجود في مجال الجلسة في Switch.jsp.
الشكل 23: المراجع التي تم وضعها في userBean في الجلسة في ملف Switch.jsp |
انقر فوق Add Bean... لتحديد فئة bookstore.User، وحدد اسم Bean كـ ses_userBean في عمود المعرف، وحدد نطاق الجلسة في عمود النطاق. ses_userBean هو الاسم المحدد لـ userBean في Switch.jsp. ستقوم حاوية الويب بالبحث عن الكائن في الجلسة بناءً على هذا الاسم. إذا لم تتمكن من العثور عليه، فسوف تقوم بإنشاء كائن bookstore.User لأنه يتم استدعاء Welcome.jsp بعد المفتاح .jsp لذا، ما لم تنتهي صلاحية الجلسة، يمكن العثور على كائن userBean.
انقر فوق "إنهاء" مباشرةً لإنشاء ملف Welcome.jsp، ويكون الرمز كما يلي:
قائمة التعليمات البرمجية 15 صفحة الترحيب Welcome.jsp
1. <%@ page contentType="text/html; charset=GBK" %> 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3. <أتش تي أم أل> 4. <الرأس> 5. <العنوان> 6. مرحبا بكم 7.</العنوان> 8.</الرأس> 9. <jsp:useBean id = "ses_userBean" نطاق = "جلسة" فئة = "bookstore.User" /> 10.<jsp:setProperty name="ses_userBean" property="*" /> 11.<body bgcolor="#ffffff"> 12.<h1> 13. تم إنشاء JBuilder بواسطة JSP 14.</h1> 15.</الجسم> 16.</html> |
يتم تعيين مكتبة العلامات المشار إليها في الخطوة 2 من المعالج بما يتوافق مع رمز إعلان مكتبة العلامات المشار إليها في السطر 2. تتوافق مجموعة Bean في الخطوة 3 مع الأسطر من التاسع إلى العاشر من التعليمات البرمجية نظرًا لعدم الحاجة إلى ملء قيمة Bean في Welcome.jsp، فيجب إزالة التعليمات البرمجية الموجودة في السطر 10 يدويًا.
بعد ذلك، نرجع إلى مكتبة علامات التاريخ والوقت في ملف Welcome.jsp ونستخدمها لإنشاء سلسلة تنسيق الوقت الحالي. افتح ملف Welcome.jsp وانتقل إلى صفحة عرض المصدر. قم أولاً بمسح الكود الذي أنشأه JBuilder في <body></body>، وأدخل "<dt:" في <body></body>، وسيستخدم JBuilder وظيفة TagInsight لعرض جميع عناصر العلامات المتاحة في مكتبة العلامات هذه، كما يلي كما هو مبين في الشكل:
الشكل 24 استخدام TagInsight للدخول إلى مكتبة العلامات
يمكن استخدام TagInsight لإدخال العلامات المتاحة في مكتبة العلامات بسهولة، مما يؤدي إلى تسريع عملية إدخال التعليمات البرمجية لمكتبة العلامات بشكل كبير ويضمن صحتها. في Welcome.jsp، نستخدم مكتبة العلامات للحصول على سلسلة زمنية منسقة حاليًا، بالإضافة إلى ذلك، نحصل أيضًا على اسم المستخدم من خلال ses_userBean. يبدو الكود النهائي لـ Welcome.jsp كما يلي:
قائمة التعليمات البرمجية 16 Welcome.jsp تشير إلى مكتبة العلامات وكائن الجلسة
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%> 3. <أتش تي أم أل> 4. <الرأس> 5. <العنوان> مرحباً>/العنوان> 6.</الرأس> 7. <jsp:useBean id = "ses_userBean" نطاق = "جلسة" فئة = "bookstore.User"/> 8.<body bgcolor="#ffffff">أنت 9. <%=ses_userBean.getUserName()%>، مرحبًا بك لتسجيل الدخول. <br> 10. الوقت الحالي هو<dt:format Pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:format> 11. <br>انقر<a href="quit.jsp">هنا</a> للخروج من النظام 12.</الجسم> 13.</html> |
بالإضافة إلى ذلك، قام JBuilder بنسخ ملف وصف مكتبة علامات التاريخ والوقت taglibs-datetime.tld إلى WEB-INF، والتلاعب بملف web.xml للإعلان عن عنوان taglibs-datetime.tld:
قائمة التعليمات البرمجية 17 الإعلان عن ملف وصف العلامة في web.xml
1.<?xml version="1.0" encoding="UTF-8"?> 2.… 3. <تطبيق الويب> 4.<تاغليب> 5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri> 6. <taglib-location>/WEB-INF/taglibs-datetime.tld</taglib-location> 7.</تاجليب> 8.</تطبيق الويب> |
كما هو موضح أعلاه، في الأسطر من 4 إلى 7 من web.xml، يقوم JBuilder تلقائيًا بإضافة ملف الوصف الخاص بمكتبة علامات التاريخ والوقت حتى تتمكن حاوية الويب من العثور على المعلومات المطلوبة بشكل صحيح.
عند تجميع المشروع لإنشاء دليل ويب، سيقوم JBuilder بنسخ ملف JAR taglibs-datetime.jar الخاص بمكتبة علامات التاريخ والوقت إلى دليل WEB-INF/lib.
عندما يقوم المستخدم بتسجيل الدخول بنجاح، سيتم إعادة توجيهه إلى صفحة Welcome.jsp ويكون تأثير الصفحة كما هو موضح أدناه:
الشكل 25: صفحة تأثير Welcome.jsp |
عندما ينقر المستخدم على الرابط "هنا"، سيتم ربطه بـ Quit.jsp. تكون صفحة Quit.jsp مسؤولة عن مسح الجلسة، وبعد مسح الجلسة، ستقوم بإلغاء ربط الكائنات المشار إليها في الجلسة وتحرير الموارد.
صفحة معالجة الخروج Quit.jsp
نظرًا لأن بروتوكول HTTP يعمل بطريقة الطلب/الاستجابة، فعندما يخرج العميل من النظام، فإنه يحتاج إلى إرسال طلب نشط إلى خادم الويب لإعلام خادم الويب بتدمير الجلسة في الوقت المناسب، وإلا فإن خادم الويب سينتظر فقط حتى تنتهي الجلسة قبل تدميرها.
نحن نستخدم Quit.jsp للتعامل مع خروج المستخدم من النظام. يعتبر Quit.jsp مسؤولاً عن تسجيل الخروج من الجلسة وتحرير الموارد في الوقت المناسب.
· تسجيل الخروج من الجلسة.
· أغلق نافذة المتصفح.
الرمز هو كما يلي:
1. <%@ page contentType="text/html; charset=GBK" %> 2.%% 3.session.invalidate(); 4.%> 5. < لغة السيناريو = "جافا سكريبت" > 6.window.opener = null; 7.window. Close(); 8.</نصي> |
السطر 3 مسؤول عن تسجيل الخروج من الجلسة، وستكون الكائنات الموضوعة أصلاً في الجلسة غير مرتبطة وتنتظر حتى تقوم مجموعة البيانات المهملة بتحرير الموارد. في هذا المثال، يوجد كائن userBean اسمه ses_userBean في الجلسة (يتم وضعه في الجلسة في Switch.jsp بعد استدعاء session.invalidate()، يكون userBean غير منضم من الجلسة، وسيتم استخدام أسلوب valueUnbound() الخاص به). يتم تشغيلها ثم انتظر جمع البيانات المهملة.
الأسطر من 5 إلى 8 هي برنامج نصي جافا سكريبت مسؤول عن إغلاق النافذة. إذا لم يتم فتح صفحة الويب من خلال برنامج نصي (window.open())، فيجب تعيين كائن window.opener قبل استدعاء window.إغلاق(). البرنامج النصي لإغلاق النافذة فارغ، كما هو موضح في السطر 6، وإلا سينبثق المتصفح مربع حوار يؤكد الإغلاق. وجد المؤلف أن هذه المشكلة أزعجت العديد من مبرمجي الويب، لذلك أشرت إليها على وجه الخصوص.
الخبرة العملية:
عندما يخرج المستخدم من النظام، يجب تسجيل الخروج من الجلسة، وإلا فلن يتم مسح كائن الجلسة حتى تنتهي الجلسة في الخادم. افترض أن الحد الأقصى لوقت عدم النشاط للجلسة هو 30 دقيقة (الوقت الافتراضي). إذا لم يتم مسح كائنات الجلسة يدويًا، فلن يتم تحرير موارد النظام التي تشغلها هذه الكائنات إلا بعد مرور 30 دقيقة بعد خروج المستخدم من النظام. |