Artikel ini terutama memperkenalkan contoh menggunakan pendengar untuk Java untuk menghitung jumlah orang secara online di situs web. Ini memiliki nilai referensi tertentu. Teman yang membutuhkan dapat mempelajarinya.
(1) Buat kelas implementasi pendengar
Untuk secara kasar menghitung jumlah orang secara online di situs web, pertama, Anda dapat mendengarkan melalui ServletContextListener. Ketika konteks aplikasi web dimulai, tambahkan daftar di ServletContext untuk menyiapkan nama pengguna yang disimpan di online; Kemudian, Anda dapat mendengarkan melalui httpsessionattributeListener. Ketika pengguna log dalam berhasil mengatur nama pengguna ke sesi, nama pengguna disimpan dalam daftar daftar di ServletContext pada saat yang sama; Akhirnya, dengarkan melalui HttpsessionListener. Ketika pengguna keluar dari sesi, nama pengguna dihapus dari daftar daftar dalam konteks aplikasi.
Oleh karena itu, tulis kelas OnLinEnterener untuk mengimplementasikan servletContextListener, httpsessionAttributeListener, dan antarmuka httpsessionListener. Kode spesifiknya adalah sebagai berikut:
paket com.web.servlet; impor java.util.linkedlist; impor java.util.list; impor javax.servlet.servletcontext; impor javax.servlet.servletcontextEvent; impor javax.servlet.servletcontextListener; impor javax.servlet.http.httpsessionAttributeListener; impor javax.servlet.http.httpsessionBindingEvent; impor javax.servlet.http.httpsessionEvent; impor javax.servlet.http.httpsessionlistener; // Statistik Pengguna Online Kelas Implementasi Kelas Publik OnlineListener mengimplementasikan servletContextListener, httpsessionAttributEnterer, httpsessionListener {private servletcontext application = null; public void ContextDestroyed (servletContextEvent arg0) {// TODO Metode yang dihasilkan secara otomatis} public void contextInitialized (servletContextEvent arg0) {// menginisialisasi objek aplikasi this.application = arg0.getServletContext (); // Tetapkan atribut daftar untuk menyimpan nama pengguna this.application.setAttribute ("online", LinkedList baru <string> ()); } // Metode yang akan panggilan balik saat menambahkan atribut ke sesi public void atributeAdded (httpsessionBindingEvent arg0) {// Dapatkan daftar nama pengguna <string> online = (daftar <string>) this.application .getAttribute ("online"); if ("username" .Equals (arg0.getName ())) {// Tambahkan nama pengguna saat ini ke daftar online.add ((string) arg0.getValue ()); } // Setel ulang daftar yang ditambahkan ke atribut aplikasi this.application.setAttribute ("online", online); } public void attributeRemoved(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } public void attributeReplaced(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } public void sessionCreated(HttpSessionEvent arg0) { // TODO Auto-generated method stub } // Method that will callback when the Sesi dihancurkan public void sessionDestroyed (httpsessionEvent arg0) {// Dapatkan daftar daftar pengguna <string> online = (daftar <string>) this.application .getAttribute ("online"); // Dapatkan username string saat ini username = (string) arg0.getSession (). GetAttribute ("username"); // hapus nama pengguna ini dari daftar online.remove (nama pengguna); // Setel ulang daftar yang dihapus ke properti aplikasi this.application.setAttribute ("online", online); }} (2) Daftarkan pendengar di web.xml
Setelah pendengar diimplementasikan, ia juga perlu mendaftar di file web.xml untuk berfungsi. Anda hanya perlu menambahkan elemen di web.xml sebagai berikut.
<!-Daftarkan pendengar-> <listener> <!-Tentukan nama yang sepenuhnya memenuhi syarat dari kelas implementasi pendengar-> <Distener-class> com.web.servlet.onlineListener </engeaner-class> </listener
Akhirnya, kami membuat beberapa servlet untuk menguji fungsionalitas yang diterapkan oleh pendengar ini.
Kode kelas servlet untuk menangani login pengguna:
paket com.web.servlet; impor java.io.ioException; impor java.io.printwriter; impor java.util.list; impor javax.servlet.servletException; impor javax.servlet.http.httpservlet; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; // Servlet Menangani Login Pengguna Kelas Publik LogInservlet Memperluas httpservlet {public void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {this.dopost (permintaan, respons); } public void dopost (permintaan httpservletRequest, respons httpservletresponse) melempar servletException, ioException {request.setcharacterencoding ("UTF-8"); // Konten Konten yang sesuai. Metode yang diatribusikan dalam httpsessionAttributeListener if (username! = null &&! UserName.equals ("")) {request.getSession (). setAttribute ("username", username); } // Dapatkan daftar nama pengguna online dari daftar konteks aplikasi <string> online = (daftar <string>) getSerVletContext (). GetAttribute ("online"); response.setContentType ("Teks/html; charset = utf-8"); Printwriter out = response.getWriter (); out.println ("<Html>"); out.println ("<Head> <title> Daftar Pengguna </iteme> </head>"); out.println ("<body>"); out.println ("Pengguna saat ini adalah:" + nama pengguna); out.print ("<hr/> <h3> Daftar pengguna online </h3>"); ukuran int = online == null? 0: online.size (); untuk (int i = 0; i <size; i ++) {if (i> 0) {out.println ("<br/>"); } out.println (i + 1 + "." + online.get (i)); } // Catatan: Untuk secara otomatis menulis ulang URL tautan out.println ("<hr/> <a href ="/"mce_href ="/"" " + response.encodeUrl (" logout ") +"/"> logout </a>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }} Kode kelas untuk menangani login pengguna ke servlet
paket com.web.servlet; impor java.io.*; impor java.util.list; impor javax.servlet.servletException; impor javax.servlet.http.*; // Servlet yang menangani Sesi Pengguna Sesi Public Class LogoutServlet memperluas httpservlet {public void doGet (httpservletRequest, respons httpservletResponse) melempar servletException, ioException {this.dopost (request, response); } public void dopost (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {request.setcharacterencoding ("UTF-8"); // Hancurkan sesi, Metode SesiesDestroyed di sessionlinStener akan dipicu request.getSession (). Invalidate (); // Dapatkan daftar nama pengguna online dari daftar konteks aplikasi <string> online = (daftar <string>) getServletContext (). GetAttribute ("online"); response.setContentType ("Teks/html; charset = utf-8"); Printwriter out = response.getWriter (); out.println ("<Head> <title> Daftar Pengguna </iteme> </head>"); out.println ("<body>"); out.print ("<h3> Daftar pengguna online </h3>"); ukuran int = online == null? 0: online.size (); untuk (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 (); }} Kemudian buat file index.html untuk pengguna masuk, kode ini adalah sebagai berikut:
<! Doctype html public "-// w3c // dtd html 4.01 transisi // en"> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = uTf-8"> <title> index.html </title </html; body = "BOAD =" BOAD = "BOAD =" BOAD = "BOAD =" BOAD = "BOAD =" BOAD = "BOAD =" <input type = "text" name = "username"/> <input type = "kirim" value = "login"/> <br/> <br/> </form> </body> </html>
Menyebarkan web ke Tomcat Container Total dan Mulai. Buka browser untuk mengakses
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.