/*
老师叫我们做防止用户重复登录 实际就是判断session中有无这个名字! 
我的想法是这样 但是 没成功 各位给点意见!
[code]
请输入您的ID:<input type="text" name="username">
<input type="submit" name="ok" value="Enter">
<%
if(request.getParameter("ok")!=null)
{
//out.print("同一Id不能重复登录的实现 还没实现........");
if (session.isNew())
{
//out.print("the");
String username = request.getParameter("username");
session.setMaxInactiveInterval(50);
session.setAttribute("username",username);
response.sendRedirect("index01.jsp");
}
else 
{
//out.print("no???");
String username = request.getParameter("username");
String onlinename = (String)session.getAttribute("username");
if (onlinename==username)
{
out.print("同一Id不能重复登录");
}
}
}
[/code]
*/

解决方案 »

  1.   

    如果是重新登录都会建立新的session,不同用户使用不同的session
    你同时打开两个IE画面,用相同的用户登录,他们使用的应该是不同的session
    你可以放如application中,或者通过数据库的方式来解决。
      

  2.   

    你的客户信息是提交给谁了!
    没有接受处理数据的页面,你的request上那里能有值啊!怎么能存住同一个值呢!
      

  3.   

    恩,同意楼上的观点,session只是存储单个用户的消息,无法实现区别是否这个用户已经在线并不允许再重新登陆的功能,使用数据库来解决重复问题,效果较好!
      

  4.   

    ....那你们说
        用application怎么做?
        要是用数据库,是不在用户信息里设置一个状态位?
        用户在线的时候 设置为1 不在线为0 那么他退出的时候又怎么判断呢?
        正规点退出那还好做 如果直接关闭浏览器 如何得知?!
      

  5.   

    各位哥哥 姐姐给点思路或者想法撒 csdn上的高手这么多!
      

  6.   

    用sessionlistener试试,google一下,应该可以的
      

  7.   

    你用Vector这个动态数组试试,先把登陆的人的用户名都存放在里面。然后如果有人来连接登陆的时候,获得他输入的用户名,跟数组里面的名字比较一下,如果相同了,就给他提示出错,如果没出错,就把他的名字加到数组里面。
    我也在学习JSP希望能多交一些朋友,我的QQ是278851372,谢谢。希望和大家一起学习进步。
      

  8.   

    楼上的是个好策略,可以将登陆的用户名放到HashSet里面,如果有重复的,在登陆的时候就提示此用户已经登陆,也就防止了用户两次登陆。当然这要将这个HashSet放在application中。
        但也存在一个问题。具体问题你就自己考虑。
      

  9.   

    通过对Session监听,结合ServletContext来处理,方法很简单
      

  10.   

    在servletcontext里存放1个集合,该集合用于记录在线用户的id,登陆时往这个集合添加用户id,退出时删除该id,如果集合内已经有该id存在则拒绝登陆
    至于对session进行监听,是为了防止用户通过关闭浏览器,或其他途径断开与服务器连接时也能保证该用户id正常从集合里删除
      

  11.   

    在servletcontext里存放1个集合,该集合用于记录在线用户的id,登陆时往这个集合添加用户id,退出时删除该id,如果集合内已经有该id存在则拒绝登陆
    至于对session进行监听,是为了防止用户通过关闭浏览器,或其他途径断开与服务器连接时也能保证该用户id正常从集合里删除
    这个比较不错...
      

  12.   

    要是用数据库,是不在用户信息里设置一个状态位?
        用户在线的时候 设置为1 不在线为0 那么他退出的时候又怎么判断呢?
        正规点退出那还好做 如果直接关闭浏览器 如何得知?!
    回答,如果用户直接关闭浏览器,建议在timeout到时后,触发修改数据库中的用户状态