Bagaimana untuk melaksanakan fungsi mengira orang dalam talian di Jawa
1. Pengenalan kepada pendengar
Pendengar ialah program java biasa yang melaksanakan antara muka tertentu Program ini digunakan khas untuk memantau objek java yang lain . Panggilan kaedah atau perubahan atribut, apabila peristiwa di atas berlaku dalam objek yang dipantau, kaedah pendengar akan dilaksanakan serta-merta.
2. Jenis pendengar Java
(1)ServletContextListener
Digunakan untuk mendengar WEB, acara permulaan dan pemusnahan
konteks kekosongan awam yang dimulakan(ServletContexts sce): Dilaksanakan apabila memulakan aplikasi web
public void contextDestroyed(ServletContextEvent sce) {}: Dilaksanakan apabila memusnahkan aplikasi web
(2)HttpSessionListener
digunakan Monitor penciptaan dan pemusnahan objek Sesi
public void sessionCreated(HttpSessionEvent se) {}: dilaksanakan apabila sesi dicipta
public void sessionDestroyed(HttpSessionEvent se) {}: dilaksanakan apabila sesi sedang musnah
(3)ServletRequestListener
digunakan untuk memantau penciptaan dan pemusnahan objek Requset
public void requsetCreated(HttpSessionEvent se) {}: Dilaksanakan
permintaan kekosongan awamDestroyed(HttpSessionEvent se) {}: Dilaksanakan apabila requset dimusnahkan(4)ServletContextAttributeListener digunakan untuk memantau perubahan dalam atribut skop WEB, termasuk: atribut penambahan skop WEB , memadamkan atribut Atribut, atribut yang diubah suai attributeAdded(ServletContextEvent sce): Dilaksanakan apabila menambah atribut pada ServletContextattributeAdded(ServletContextRemoved sce): Dilaksanakan daripada🎜Deleting attribute (ServletContextRemoved sce): Dilaksanakan apabila mengubah suai atribut dalam ServletContext(5)HttpSessionAttributeListener digunakan untuk memantau perubahan dalam atribut skop Sesi, termasuk: menambah atribut, memadamkan atribut(6)ServletRequestAttributeListenerdigunakan untuk mendengar perubahan dalam atribut skop Requset, termasuk: menambah atribut, memadamkan atribut, mengubah suai atribut
(7)HttpSessionActivationListener
digunakan untuk mendengar Pensirian dan penyahserikatan objek dalam Sesi3 Listener melaksanakan fungsi mengira orang (1) Mula-mula buat pendengar pakej pendengar dan kemudian buat kelas OnlineListener baharu<.> (2) Buat antara muka untuk servlet pendengar4. Redis melaksanakan fungsi mengira orang
package listener; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionBindingEvent; @WebListener() public class OnlineListener implements ServletContextListener,HttpSessionListener, HttpSessionAttributeListener { private static int count=0; public OnlineListener() {//构造函数 } // ServletContextListener的实现方法,在初始化web应用时执行,你可以在此处初始化server上下文相关数据 public void contextInitialized(ServletContextEvent sce) {//应用初始化完成 } // ServletContextListener的实现方法,在web应用关闭时执行 public void contextDestroyed(ServletContextEvent sce) { } // HttpSessionListener的实现方法,session被创建的时候执行 public void sessionCreated(HttpSessionEvent se) {//创建 count++; ServletContext app = se.getSession().getServletContext(); app.setAttribute("count",count); } // HttpSessionListener的实现方法,session被销毁的时候执行 public void sessionDestroyed(HttpSessionEvent se) { count--; ServletContext app = se.getSession().getServletContext(); app.setAttribute("count",count); } }
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet(name = "OnlineServlet",urlPatterns = "/online") public class OnlineServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String op=request.getParameter("op"); String result=""; switch (op){ case "login": //request.getSession()触发监听器的sessionCreated ServletContext app=request.getSession().getServletContext(); int count= (int) app.getAttribute("count"); result=String.format("当前%d人在线",count); break; case "logout": //销毁session,触发监听器的sessionDestroy request.getSession().invalidate();//销毁session result="您已经退出了!"; } response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); out.write(result); out.close(); } }
Mula mengakses masa halaman, tinggalkan jadual halaman: (id, tempat, ip, user_id, user_name, begin_time, end_time, env, info ,len_min)
Jadual statistik: purata tempoh lawatan, purata bilangan orang dalam talian pada masa yang sama, bilangan maksimum orang dalam talian pada masa yang sama (id, hari, umur_len_visit_min, acu, pcu)
Jadual rekod statistik: pada masa yang sama seminit Bilangan orang dalam talian. (id, min_time, num)
(2) Gunakan redis untuk menyimpan pengguna dalam talian semasa Setiap panggilan boleh dianggap sebagai menyemak imbas selama satu minit (ia boleh diperhalusi lagi mengikut perniagaan, dan hanya yang dijadualkan. tugasan perlu merekodkan minit terakhir) dan pengguna dalam minit semasa, anda boleh mengira kekerapan pengguna melawat halaman tertentu
(3) Pada masa yang sama, rekod masa pengguna mula melawati. halaman dan masa apabila dia meninggalkan halaman, dan anda boleh menganalisis susulan 🎜>
(4) Untuk memudahkan pemprosesan data, anda boleh merekodkan bilangan lawatan ke setiap halaman setiap minit > (5) redis, simpan 2 cincang: mulakan, pemasa set cincang yang disimpan merekodkan maklumat terperinci sekarang, set akses pengguna diluluskan oleh antara muka, merekodkan masa muat semuladan mengemas kini dan menyegarkan operasi melalui pemasa
ps: Kekunci individu dalam cincang tidak boleh ditetapkan secara automatik untuk tamat tempoh, atau anda boleh menggunakan pemantauan redis dan menggunakan kekunci jenis String , dan anda hanya boleh memproses apa yang anda perlukan untuk memproses
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi mengira orang dalam talian di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Armstrong di Jawa. Di sini kita membincangkan pengenalan kepada nombor Armstrong di java bersama-sama dengan beberapa kod.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah
