原来一直把用户信息保存在session中,后来发现如果这样做会很消耗内存,于是我设计了一个类,里面有个HashMap对象根据key=sessionid,value=用户信息 来保存用户信息。代码如下:
public class SessionManager {
private static SessionManager instance=new SessionManager();
private Map sessionMap=Collections.synchronizedMap(new HashMap());
private SessionManager(){
super();
}
public static SessionManager getInstance(){
return instance;
}
public Userinfo getUserinfo(String sessionid){
if(sessionMap.containsKey(sessionid))
return (Userinfo)sessionMap.get(sessionid);
else return null;
}
public void setUserinfo(String sessionid,Userinfo userinfo){
sessionMap.put(sessionid, userinfo);
}
public void removeSession(String sessionid){
sessionMap.remove(sessionid);
}}
现在的疑惑是private Map sessionMap=Collections.synchronizedMap(new HashMap());这样可以保证线程安全,但是也很消耗资源,不知道大家在项目中是怎么解决这个问题的。
public class SessionManager {
private static SessionManager instance=new SessionManager();
private Map sessionMap=Collections.synchronizedMap(new HashMap());
private SessionManager(){
super();
}
public static SessionManager getInstance(){
return instance;
}
public Userinfo getUserinfo(String sessionid){
if(sessionMap.containsKey(sessionid))
return (Userinfo)sessionMap.get(sessionid);
else return null;
}
public void setUserinfo(String sessionid,Userinfo userinfo){
sessionMap.put(sessionid, userinfo);
}
public void removeSession(String sessionid){
sessionMap.remove(sessionid);
}}
现在的疑惑是private Map sessionMap=Collections.synchronizedMap(new HashMap());这样可以保证线程安全,但是也很消耗资源,不知道大家在项目中是怎么解决这个问题的。
解决方案 »
- 泛型方法的问题
- 急!!!ssh开发中spring 事务管理出现Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL)
- 初学者 javamail写的smtp客户端向163发送邮件失败 求救
- 请问那里有用Struts做的留言板(SQLSERVEFR库和ACCESS库都行),可以下载的原代码,最好是经过验证的能用的。谢谢了。(分不够在加)
- session的生命周期问题?
- 请教高手soap、web service、xml !!!!
- struts到底有何优势呢?
- 如何在jsp页面中嵌套formula one控件??
- java 中怎么验证apache 密码
- Spring MVC 能够直接访问jsp页面
- 请教关于sqlserver2000到jsp的编码问题
- struts2的s:property value是从哪取值的
这样做凭空多出很多麻烦来,加了synchronized更糟,并发访问的过程也得排队了。