本文主要介绍了java中使用session监听实现同帐号登录限制、登录人数限制,具体代码如下:
问题域:
1、同帐号登录:若此帐号已登录,不可再次登录(与QQ模式相反)。
2、登录人数限制,超过、已达人数限制则提示:系统繁忙,稍后再试。
解决思路:使用HttpSessionAttributeListener监听器(虽然我同时使用了HttpSessionListener不过感觉不好操作)
知识储备:HttpSessionAttributeListener中有attributeAdd、attributeRemove、attributeReplace3个方法。
对session的setAttribute、removeAttribute将触发attributeAdd、attributeRemove方法,对同一个session的同一个attribute进行重复设置将触发attributeReplace方法。
HttpSessionListener不好操作的原因:只要访问jsp页面便会创建session(访问html并不会创建session,在server端,如servlet中调用HttpServletRequest.getSession(true)才会创建),jsp是动态页,本质就是个servlet。我的login.jsp显然是个jsp,当我在监听器中invalidate一个session,返回登录页,马上就又创建了一个session。这是我感觉不清楚的地方,功夫没到家。
具体实现:
监听器代码
代码主要思路是定义一个静态List存放session和帐号名称。
登录的Action中获得监听器返回值并处理的代码
页面捕获提示信息代码
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!