تقدم هذه المقالة بشكل أساسي مثالًا على استخدام المستمعين إلى Java لحساب عدد الأشخاص عبر الإنترنت على موقع ويب. لديها قيمة مرجعية معينة. يمكن للأصدقاء المحتاجين التعرف على ذلك.
(1) إنشاء فئة تنفيذ المستمع
لحساب عدد الأشخاص عبر الإنترنت تقريبًا على موقع ويب ، أولاً ، يمكنك الاستماع من خلال ServletContextListener. عند بدء تشغيل سياق تطبيق الويب ، أضف قائمة في ServletContext لإعداد اسم المستخدم المخزن في الإنترنت ؛ بعد ذلك ، يمكنك الاستماع من خلال httpsessionattributelistener. عندما يقوم المستخدم بتسجيل الدخول بنجاح في تعيين اسم المستخدم على الجلسة ، يتم تخزين اسم المستخدم في القائمة في ServletContext في نفس الوقت ؛ أخيرًا ، استمع من خلال httpsessionlistener. عندما يقوم المستخدم بتسجيل الخروج من الجلسة ، يتم حذف اسم المستخدم من القائمة في سياق التطبيق.
لذلك ، اكتب فئة onlinelistener لتنفيذ واجهات ServletContextListener و HttPsessionAttributeListener و HttpsessionListener. الرمز المحدد كما يلي:
حزمة com.web.servlet ؛ استيراد java.util.linkedList ؛ استيراد java.util.list ؛ استيراد javax.servlet.servletContext ؛ استيراد javax.servlet.servletcontextevent ؛ استيراد javax.servlet.servletContextListener ؛ استيراد javax.servlet.http.httpsessionAttributeListener ؛ استيراد javax.servlet.http.httpsessionbindingevent ؛ استيراد javax.servlet.http.httpsessionevent ؛ استيراد javax.servlet.http.httpsessionlistener ؛ . public void contextDestroyed (servletcontextevent arg0) {// todo method method method contextinitialized (servletContextevent arg0) {// تهيئة كائن تطبيق this.application = arg0.getServletContext () ؛ // قم بتعيين سمة قائمة لحفظ اسم المستخدم this.application.setattribute ("Online" ، New LinkedList <String> ()) ؛ } // الطريقة التي ستقوم بالاستدعاء عند إضافة سمات إلى جلسة الفراغ العام المنتظم (httpsessionbindingevent arg0) {// الحصول على قائمة اسم المستخدم <string> Online = (list <string>) this.application .getAttribute ("Online") ؛ if ("username" .equals (arg0.getName ())) {// إضافة اسم المستخدم الحالي إلى القائمة عبر الإنترنت. } // إعادة تعيين القائمة المضافة إلى سمة التطبيق this.application.setattribute ("Online" ، عبر الإنترنت) ؛ ) يتم تدمير الجلسة العامة sessiondestroyed (httpsessionevent arg0) {// الحصول على قائمة اسم المستخدم <string> online = (list <string>) this.application .getAttribute ("Online") ؛ // احصل على اسم المستخدم الحالي لسلسلة المستخدم = (سلسلة) Arg0.GetSession (). getAttribute ("اسم المستخدم") ؛ // حذف اسم المستخدم هذا من القائمة عبر الإنترنت. remove (اسم المستخدم) ؛ // إعادة تعيين القائمة المحذوفة في خاصية التطبيق this.application.setattribute ("Online" ، عبر الإنترنت) ؛ }} (2) سجل المستمع في web.xml
بعد تنفيذ المستمع ، يحتاج أيضًا إلى التسجيل في ملف web.xml للعمل. تحتاج فقط إلى إضافة عناصر في web.xml على النحو التالي.
<!-قم بتسجيل مستمع-> <stanker> <!-حدد الاسم المؤهل تمامًا لفئة تنفيذ المستمع-> <Stenger-Class> com.web.servlet.onlinelistener </leader-class> </leader
أخيرًا ، نقوم بإنشاء العديد من servlets لاختبار الوظائف التي ينفذها هذا المستمع.
رمز فئة Servlet للتعامل مع تسجيل الدخول إلى المستخدم:
حزمة com.web.servlet ؛ استيراد java.io.ioException ؛ استيراد java.io.printwriter ؛ استيراد java.util.list ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ . } public void dopost (httpservletrequest request ، httpservletresponse) يلقي servletexception ، ioException {request.setcharacterencoding ("utf-8") طريقة contributeAdded في httpsessionattributelistener if (اسم المستخدم! = null &&! username.equals ("")) {request.getSession (). setAttribute ("اسم المستخدم" ، اسم المستخدم) ؛ } // احصل على قائمة اسم المستخدم عبر الإنترنت من قائمة سياق التطبيق <string> Online = (list <string>) getServletContext (). getAttribute ("Online") ؛ استجابة. printWriter out = response.getWriter () ؛ out.println ("<html>") ؛ out.println ("<head> <title> قائمة المستخدم </title> </head>") ؛ out.println ("<body>") ؛ Out.println ("المستخدم الحالي هو:" + اسم المستخدم) ؛ Out.print ("<hr/> <h3> قائمة المستخدمين عبر الإنترنت </h3>") ؛ حجم int = عبر الإنترنت == فارغ؟ 0: Online.size () ؛ لـ (int i = 0 ؛ i <size ؛ i ++) {if (i> 0) {out.println ("<br/>") ؛ } out.println (i + 1 + "." + online.get (i)) ؛ } // ملاحظة: لإعادة كتابة عنوان URL للارتباط تلقائيًا. Out.println ("</body>") ؛ out.println ("</html>") ؛ out.flush () ؛ out.close () ؛ }} رمز الفئة للتعامل مع تسجيل الدخول إلى المستخدم إلى servlet
حزمة com.web.servlet ؛ استيراد java.io.*؛ استيراد java.util.list ؛ استيراد javax.servlet.servletexception ؛ استيراد javax.servlet.http.*؛ . } public void dopost (طلب httpservletrequest ، استجابة httpservletponse) يلقي servletexception ، ioException {request.setcharacterencoding ("utf-8") ؛ // تدمير الجلسة ، سيتم تشغيل طريقة SessionDestroyed في SessionLinStener request.getSession (). perilated () ؛ // احصل على قائمة اسم المستخدم عبر الإنترنت من قائمة سياق التطبيق <string> Online = (list <string>) getServletContext (). getAttribute ("Online") ؛ استجابة. printWriter out = response.getWriter () ؛ out.println ("<head> <title> قائمة المستخدم </title> </head>") ؛ out.println ("<body>") ؛ Out.print ("<h3> قائمة المستخدمين عبر الإنترنت </h3>") ؛ حجم int = عبر الإنترنت == فارغ؟ 0: Online.size () ؛ لـ (int i = 0 ؛ i <size ؛ i ++) {if (i> 0) {out.println ("<br/>") ؛ } out.println (i + 1 + "." + online.get (i)) ؛ } out.println ("<hr/> <a href ="/"mce_href ="/"" index.html/"> home </a> ") ؛ Out.println ("</body>") ؛ out.println ("</html>") ؛ out.flush () ؛ out.close () ؛ }} ثم قم بإنشاء ملف index.html للمستخدمين لتسجيل الدخول ، والرمز هو كما يلي:
<! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"> <title> index. اسم المستخدم: <input type = "text" name = "username"/> <input type = "submit" value = "login"/> <br/> <br/> </form> </body> </html>
نشر الويب إلى إجمالي حاوية Tomcat والبدء. افتح المتصفح للوصول
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.