⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 useraccess.java

📁 java web开发宝典源代码
💻 JAVA
字号:
package com.yxq.monitor;

import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

import com.yxq.bean.SingleObject;

public class UserAccess implements HttpSessionBindingListener {
	private String userID;	

	public String getUserID() {
		return userID;
	}
	public void setUserID(String userID) {
		this.userID = userID;
	}
	
	public void valueBound(HttpSessionBindingEvent event) {
		System.out.println("用户:"+userID+" 于 "+new Date()+" 访问!");
		HttpSession session=event.getSession();
		ServletContext sc=session.getServletContext();
		HashMap<String,Map> usermap=(HashMap)sc.getAttribute("usermap");
		
		if(usermap==null)
			usermap=new HashMap<String,Map>();
		if(usermap.size()==0||(!usermap.containsKey(userID))){
			usermap.put(userID,new HashMap());  //为当前用户分配一个购物车,并以当前用户的ID为键值将用户的购物车存储到购物车集合中
			sc.setAttribute("usermap",usermap);
		}
		System.out.println("上线 — 目前有"+usermap.size()+"人在线!");
	}

	public void valueUnbound(HttpSessionBindingEvent event) {
		System.out.println("用户:"+userID+" 于 "+new Date()+" 离开!");	
		HttpSession session=event.getSession();
		ServletContext sc=session.getServletContext();
		synchronized(sc){
			Map havemap=(HashMap)sc.getAttribute("havemap");		
			if(userID!=null&&!userID.equals("")){
				Map usermap=(HashMap)sc.getAttribute("usermap");
				if(usermap!=null&&usermap.size()!=0){
					if(usermap.containsKey(userID)){
						Map carmap=(HashMap)usermap.get(userID);
						if(carmap!=null&&carmap.size()!=0){
    						Set keys=carmap.keySet();
							Iterator it=keys.iterator();
							while(it.hasNext()){
								Integer key=(Integer)it.next();
								Integer buyN=((SingleObject)carmap.get(key)).getBuyN();
								Integer haveN=(Integer)havemap.get(key);
								havemap.put(key,haveN+buyN);
							}							
						}
						sc.setAttribute("havemap",havemap);
						usermap.remove(userID);
						System.out.println("下线 — 目前有"+usermap.size()+"人在线!");
					}					
				}
			}			
		}//synchronized
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -