现在想实现一个类似在线用户列表的功能
一种选择就是直接保存在application
另一种选择是
static HashMap userArray=new HashMap();
建立这样的静态变量来保存
请问下哪种选择比较好 各有什么优缺点
application.setAttribut()和HashMap.put很像
都用key与value 是不是application的容器结构就是HashMap呢?
没什么实战经验,如果有较好的选择希望能分享下 :D :D
如果说实现的话这两种都是一样的,但是建议不要使用application,因为这样的话系统的可扩展行不强,如果要实现应用服务器集群,那怎么办?所以说还在自己实现,实现共用接口,就算到了集群环境,改改实现就可以了,调用接口不用改。
参考这个例子来看吧.
Java中在线用户比较通用的解决办法
[quote]
获取在线用户
文章出处:http://www.diybl.com/course/3_program/java/javajs/2008330/107715.html
[/quote]
并不需要向LZ考虑的那样,采用某种手动的维护的存储空间来记录. 望有用.
application的底层容器结构就是HashMap
/**
* The context attributes for this context.
*/
protected HashMap attributes = new HashMap();
两者都要用到
//首先定义这个对象
static HashMap userArray=new HashMap();
//然后再放到application 作用域
application.setAttribut("usermap",userArray);
//jsp获取
<%
HashMap map = (HashMap )application.getAttribut("usermap");
%>
至于选择哪种方式来解决还是要根据项目的需求,不能一概而论,如果是数据量不太大,而且操作的不是很频繁的情况下,我觉得用哪种方法都行。
个人认为,还是尽量少用静态的吧,毕竟静态的在编译的时候就已经开辟了相关资源,换句话来说就是个死的了,无论你用还是不用,它都分配了。使用application的话,能动态的控制,如果两者都能实现的话,我建议还是使用application吧。