บทความนี้ส่วนใหญ่แนะนำตัวอย่างของการใช้ผู้ฟังกับ 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; // สถิติผู้ใช้ออนไลน์ผู้ฟังการใช้งานคลาสสาธารณะ OnLinelistener ใช้ ServletContextListener, httpsessionAttributelistener, httpsessionListener {แอปพลิเคชัน servletContext ส่วนตัว = null; public void contextDestroyed (servletContextEvent arg0) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ stub} public void contextInitialized (servletContextEvent Arg0) {// เริ่มต้นวัตถุแอปพลิเคชัน this.application = arg0.getServletContext (); // ตั้งค่าแอตทริบิวต์รายการเพื่อบันทึกชื่อผู้ใช้ this.application.setAttribute ("ออนไลน์", LinkedList ใหม่ <String> ()); } // เมธอดที่จะโทรกลับเมื่อเพิ่มแอตทริบิวต์ลงในเซสชันโมฆะสาธารณะ atributeDded (httpsessionBindingEvent arg0) {// รับรายการรายการชื่อผู้ใช้ <string> ออนไลน์ = (รายการ <string>) this.application .getAttribute ("ออนไลน์"); if ("ชื่อผู้ใช้" .Equals (arg0.getName ())) {// เพิ่มชื่อผู้ใช้ปัจจุบันลงในรายการออนไลน์ ADD ((String) arg0.getValue ()); } // รีเซ็ตรายการที่เพิ่มเข้ามาในแอปพลิเคชันแอปพลิเคชัน this.application.setAttribute ("ออนไลน์", ออนไลน์); } โมฆะสาธารณะ attributerEmoved (httpsessionBindingEvent arg0) {// toDo วิธีการที่สร้างอัตโนมัติ stub} โมฆะสาธารณะ attributePlaced (httpsessionbindingevent arg0) {// toDo วิธีการที่กำหนดอัตโนมัติ เมื่อเซสชันถูกทำลายโมฆะสาธารณะเซสชัน destroyed (httpsessionEvent arg0) {// รับรายการชื่อผู้ใช้รายการ <String> ออนไลน์ = (รายการ <String>) this.Application .getAttribute ("ออนไลน์"); // รับชื่อผู้ใช้ชื่อผู้ใช้ปัจจุบันชื่อผู้ใช้ = (สตริง) arg0.getSession (). getAttribute ("ชื่อผู้ใช้"); // ลบชื่อผู้ใช้นี้ออกจากรายการออนไลน์ Remove (ชื่อผู้ใช้); // รีเซ็ตรายการที่ถูกลบลงในคุณสมบัติแอปพลิเคชัน this.application.setAttribute ("ออนไลน์", ออนไลน์); - (2) ลงทะเบียนผู้ฟังใน web.xml
หลังจากใช้ผู้ฟังแล้วก็ต้องลงทะเบียนในไฟล์ web.xml เพื่อทำงาน คุณจะต้องเพิ่มองค์ประกอบใน web.xml ดังนี้
<!-ลงทะเบียนผู้ฟัง-> <ผู้ฟัง> <!-ระบุชื่อที่ผ่านการรับรองอย่างสมบูรณ์ของคลาสการใช้งานผู้ฟัง-> <Sistener-Lass> com.web.servlet.onlinelistener </sisterer-class>
ในที่สุดเราก็สร้าง 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; // servlet handling ผู้ใช้เข้าสู่ระบบคลาสสาธารณะเข้าสู่ระบบ LoginServlet ขยาย httpservlet {โมฆะสาธารณะ doget (httpservletrequest คำขอ, httpservletResponse การตอบสนอง) โยน servletexception, ioexception {this.dopost (คำขอ, การตอบสนอง); } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {request.SetchAracterencoding ("UTF-8"); // ตั้งค่าพารามิเตอร์ประเภทสตริงที่เกี่ยวข้อง/การร้องขอ วิธีการ AttributeDded ใน httpsessionattributeListener ถ้า (ชื่อผู้ใช้! = null &&! ชื่อผู้ใช้ equals ("")) {request.getSession (). setAttribute ("ชื่อผู้ใช้" ชื่อผู้ใช้); } // รับรายการชื่อผู้ใช้ออนไลน์จากรายการบริบทแอปพลิเคชัน <String> ออนไลน์ = (รายการ <String>) getSerVletContext (). getAttribute ("ออนไลน์"); Response.setContentType ("ข้อความ/html; charset = utf-8"); PrintWriter out = response.getWriter (); out.println ("<html>"); out.println ("<head> <title> รายชื่อผู้ใช้ </title> </head>"); out.println ("<body>"); out.println ("ผู้ใช้ปัจจุบันคือ:" + ชื่อผู้ใช้); out.print ("<hr/> <h3> รายชื่อผู้ใช้ออนไลน์ </h3>"); ขนาด int = ออนไลน์ == null? 0: online.size (); สำหรับ (int i = 0; i <size; i ++) {ถ้า (i> 0) {out.println ("<br/>"); } out.println (i + 1 + "." + online.get (i)); } // หมายเหตุ: หากต้องการเขียน url link out.println โดยอัตโนมัติ ("<hr/> <a href ="/"mce_href ="/"" " + response.encodeurl (" logout ") +"/"> logout </a>"); 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.*; // servlet ที่จัดการเซสชันการออกจากระบบสาธารณะของผู้ใช้ Logoutservlet ขยาย httpservlet {โมฆะสาธารณะ doGet (httpservletrequest คำขอ, httpservletResponse การตอบสนอง) โยน servletexception, ioexception {this.dopost (คำขอ, การตอบสนอง); } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {request.setcharacterencoding ("UTF-8"); // ทำลายเซสชันวิธีการที่ถูกทำลายในเซสชั่นจะถูกเรียกใช้ request.getSession (). unvalidate (); // รับรายการชื่อผู้ใช้ออนไลน์จากรายการบริบทแอปพลิเคชัน <String> ออนไลน์ = (รายการ <String>) GetSerVletContext (). getAttribute ("ออนไลน์"); Response.setContentType ("ข้อความ/html; charset = utf-8"); PrintWriter out = response.getWriter (); out.println ("<html>"); out.println ("<head> <title> รายชื่อผู้ใช้ </title> </head>"); out.println ("<body>"); out.print ("<h3> รายชื่อผู้ใช้ออนไลน์ </h3>"); ขนาด int = ออนไลน์ == null? 0: online.size (); สำหรับ (int i = 0; i <size; i ++) {ถ้า (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" ชื่อผู้ใช้: <อินพุต type = "text" name = "username"/> <input type = "subment" value = "เข้าสู่ระบบ"/> <br/> <br/> </form> </body> </html>
ปรับใช้เว็บไปยัง Tomcat Container รวมและเริ่มต้น เปิดเบราว์เซอร์เพื่อเข้าถึง
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น