java web用servlet監(jiān)聽器實(shí)現(xiàn)顯示在線人數(shù)
本文實(shí)例為大家分享了java web用servlet監(jiān)聽器實(shí)現(xiàn)顯示在線人數(shù),供大家參考,具體內(nèi)容如下
1.創(chuàng)建一個(gè)監(jiān)聽器
package com.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; //使用監(jiān)聽器實(shí)現(xiàn)顯示在線人數(shù) public class MyServletSessionListener implements HttpSessionAttributeListener { @Override public void attributeAdded(HttpSessionBindingEvent event) { // TODO 自動(dòng)生成的方法存根 ServletContext cx = event.getSession().getServletContext();//根據(jù)session對象獲取當(dāng)前容器的ServletContext對象 Object objectlogincount = cx.getAttribute("logincount");//獲取容器里面名字為logincount的對象 String name = event.getName(); if("is".equals(name)){//如果session增加的屬性名字為is,表示成功登陸一個(gè)用戶 //System.out.println("登陸的用戶名是:"+event.getValue()); if(objectlogincount==null){//如果logincount為空,表示是第一個(gè)登陸 cx.setAttribute("logincount", 1); }else{//表示已經(jīng)有人登陸了 int a = Integer.parseInt(objectlogincount.toString());//轉(zhuǎn)換已經(jīng)登陸的人數(shù) a++; cx.setAttribute("logincount", a); } } System.out.println("當(dāng)前登陸的人數(shù)為:"+cx.getAttribute("logincount")); } @Override public void attributeRemoved(HttpSessionBindingEvent event) { // TODO 自動(dòng)生成的方法存根 } @Override public void attributeReplaced(HttpSessionBindingEvent event) { // TODO 自動(dòng)生成的方法存根 } }
2.在web.xml中配置監(jiān)聽器
<listener> <listener-class>com.listener.MyServletSessionListener</listener-class> </listener>
3.用LoginServ(servlet)進(jìn)行測試
package com.serv; import java.io.IOException; 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 javax.servlet.http.HttpSession; @WebServlet(urlPatterns={"/LoginServ"}) public class LoginServ extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO 自動(dòng)生成的方法存根 String name = req.getParameter("user"); String pwd = req.getParameter("pwd"); if(true){//假設(shè)用get方式提交,所有用戶名密碼都是正確的 HttpSession session = req.getSession(); session.setAttribute("is", name);//setAttribute() 方法添加指定的屬性,并為其賦指定的值。如果這個(gè)指定的屬性已存在,則僅設(shè)置/更改值。 } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO 自動(dòng)生成的方法存根 doGet(req, resp); } }
運(yùn)行截圖:
在瀏覽器上輸入地址:
在myeclipse控制臺會輸出:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
NameNode?重啟恢復(fù)數(shù)據(jù)的流程詳解
這篇文章主要為大家介紹了NameNode?重啟恢復(fù)數(shù)據(jù)的流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02IDEA在SpringBoot項(xiàng)目使用Maven打包后jar包太小問題及解決
這篇文章主要介紹了IDEA在SpringBoot項(xiàng)目使用Maven打包后jar包太小問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04java實(shí)現(xiàn)ThreadLocal線程局部變量的實(shí)現(xiàn)
本文主要介紹了java實(shí)現(xiàn)ThreadLocal線程局部變量的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07java 抓取網(wǎng)頁內(nèi)容實(shí)現(xiàn)代碼
這篇文章主要介紹了java 抓取網(wǎng)頁內(nèi)容實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-02-02java基本教程之Thread中start()和run()的區(qū)別 java多線程教程
這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類包含start()和run()方法,它們的區(qū)別是什么?下面將對此作出解答2014-01-01SpringBoot獲取不到用戶真實(shí)IP的解決方法
最近遇到個(gè)問題,項(xiàng)目部署后發(fā)現(xiàn)服務(wù)端無法獲取到客戶端真實(shí)的IP地址,本文就來介紹一下這個(gè)問題的解決方法,感興趣的可以了解一下2023-08-08java實(shí)現(xiàn)隨機(jī)森林RandomForest的示例代碼
本篇文章主要介紹了java實(shí)現(xiàn)隨機(jī)森林RandomForest的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08