日期:2014-05-17  浏览次数:20564 次

请教怎样判断用户不能重复登陆????
判断用户是否已登陆?还有就是如果有很多个用户,是不是要一个一个判断???
还是有更好的办法?最好有代码

------解决方案--------------------
ArrayList list = null;
//调用登陆方法
list = infoDao.infoSelect(name, pwd, actor);
if (list != null) {
//用for循环取list的值
for (int i = 0; i < list.size(); i++) {
//StuInfoBean来接收
StuInfoBean bean = (StuInfoBean) list.get(i);
//把姓名和角色放到session里去
se.setAttribute("name", bean.getStuName());
se.setAttribute("actor", bean.getActor());
se.setAttribute("actor",actor);
//判断list不等于null
if (actor.equals("学生")) {
//判断actor是学生
//用学生的状态来判断学生是否第一次进来

if (!bean.getComputer().equals("1")) {
//只要学生进来过就不给生进去!
out.print(
"<script>alert('你已经登录过一次想登录在请联系老师');window.location='login.jsp'</script>");
//给他跳到页面
// request.getRequestDispatcher("/login.jsp").forward(request, response);
//response.sendRedirect("/WebRoot/login.jsp");

// request.getRequestDispatcher("login.jsp").forward(request, response);
} else {
//用学生的状态学生第一次进来
//调用更新状态

//获取计算机的IP地址
String Conputer = request.getRemoteHost();

//进行自动更新学生的状态
if (infoDao.infoUpdata(bean.getId(), Conputer)) {
request.getSession().setAttribute("id",
bean.getId() + "");

String ClassName = infoDao.getStuClass(
name);
getServletContext().setAttribute(
"className", ClassName);

// request.getRequestDispatcher(
// "/student/stuAns.jsp").forward(
// request, response);
response.sendRedirect(
"/WebRoot/student/stuAns.jsp");
}
------解决方案--------------------
我曾经回答过这个问题,你参考一下吧,里面的代码是现成的,用application解决的
http://topic.csdn.net/u/20071218/17/ba4861a2-94a7-46b2-9d85-b2d17008820e.html
------解决方案--------------------


简单办法是 让后登陆的冲掉前面登陆的
建立一个 HashMap (登陆者名称,登陆者session)


当新的成功登陆就 检查 这个登陆名否有SESSION在了 存在就 清空这个SESSION(这样第一次登陆者SESSION就空了)
然后放置新的SESSION进去

session 结束事件中 添加 HASHMAP中的删除事件(要判断是否还是登陆状态)