日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java在线用户查看_java Session统计在线用户,并且显示在线用户

發(fā)布時間:2023/12/19 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java在线用户查看_java Session统计在线用户,并且显示在线用户 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關鍵字: httpsession

1.http://www.jspcn.net/htmlnews/11049329478121583.html??????監(jiān)聽器

2.session.invalidate()?,session才會destroy

3.HttpSessionListener:? 這個監(jiān)聽取不到session里面的值

下面的代碼可以獲取上線,下線的在線列表?:

public class OnlineListener implements HttpSessionListener ,HttpSessionAttributeListener{

public void sessionCreated(HttpSessionEvent event) {//只要一打開瀏覽器就會執(zhí)行?,沒有登陸也會執(zhí)行.

}

public void sessionDestroyed(HttpSessionEvent event) {//只有超時,invalidate()才會執(zhí)行

HttpSession se=event.getSession();

OnlineManager.getInstance().removeSession(se); //從列表中刪除

//?System.out.println("remove session....................");//為什么瀏覽窗口關閉了,沒有執(zhí)行啊???

}

public void attributeAdded(HttpSessionBindingEvent event) {//如果登陸成功,?就把上線?用戶添加?到列表.

HttpSession se=event.getSession();

String name=event.getName();

String value=(String)event.getValue();

if("username".equals(name)){

OnlineManager.getInstance().addSession(se); //添加

}

}

}

public class OnlineManager {

private static OnlineManager om;

private? Map sessions;

private OnlineManager(){

sessions=new HashMap();//為什么沒有共用一個sessions;

}

public static OnlineManager getInstance(){

if(om==null){

om=new OnlineManager();

}

return om;

}

public void addSession(HttpSession se){

String key=(String)se.getAttribute("username");

sessions.put(key, se);

System.out.println("add 1 : "+sessions.size());

}

public void removeSession(HttpSession se){

String key=(String)se.getAttribute("username");

//sessions.remove(key);? //這個只是把key=null

sessions.remove(sessions.get(key));

System.out.println("remove 1 : " +"key:"+key+sessions.size());

System.out.println(sessions);

}

}

------------------------

第二種方法實現(xiàn)在線,下線:

public class BindSession implements?HttpSessionBindingListener?{

private String username;

public BindSession(String username){

this.username=username;

}

public void valueBound(HttpSessionBindingEvent event) {

HttpSession session = event.getSession();

// String name=(String)session.getAttribute("name");

ServletContext application = session.getServletContext();

// 把用戶名放入在線列表

List onlineUserList = (List) application.getAttribute("onlineUserList");

// 第一次使用前,需要初始化

if (onlineUserList == null) {

onlineUserList = new ArrayList();

application.setAttribute("onlineUserList", onlineUserList);

}

onlineUserList.add(this.username);

System.out.println("valueBound: .........."+onlineUserList.size());

}

public void valueUnbound(HttpSessionBindingEvent event) {

HttpSession session = event.getSession();

// String name=(String)session.getAttribute("name");

ServletContext application = session.getServletContext();

// 從在線列表中刪除用戶名

List onlineUserList = (List) application.getAttribute("onlineUserList");

onlineUserList.remove(this.username);

System.out.println(this.username + "退出。");

}

}

public class Login extends HttpServlet {

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

String name=req.getParameter("name");

String pass=req.getParameter("password");

boolean isLogin=false;

int len=set.size();

for(int i=0;i

if(set.containsKey(name)&&set.containsValue(pass)){

isLogin=true;

}

}

if(isLogin){

req.getSession().setAttribute("username", name);

System.out.println("login ...username="+name);

//BindListener 的使用:

BindSession bl=new BindSession(name);

req.getSession().setAttribute("lis", bl);

resp.sendRedirect("index.jsp");

}

else{

resp.sendRedirect("login.jsp");

}

總結(jié)

以上是生活随笔為你收集整理的java在线用户查看_java Session统计在线用户,并且显示在线用户的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。