以邮箱登陆为例,当我已经登陆后,别人不能再用相同的用户名登陆。这种情况其实很常见,如果用session能实现吗。我所知道session的最大范围是application一级,
这个application是说的启动weblogic时application就启动了吗。现在的现象是:
不关闭窗口,sessionID在任何叶面一样,
重新开个窗口,sessionID就变了。向各位讨教解决办法。谢谢了。

解决方案 »

  1.   

    application 是全局的,登录后把session放在这里面,
    再次登录的时候从application里面取出第1次登录的那个session,进行判断。问题:
    怎样把session放在application里面,大虾们能给出代码吗
      

  2.   

    application是共用的,session是每个用户都有的,按照一般的方法就可以了,在同一个浏览器中就不能同时登陆了,如果你同时开着IE和firefox,那都可以登陆的
      

  3.   

    http://blog.csdn.net/szhf1980/archive/2005/10/18/508345.aspx解决防止多用户使用同以账户.还有session的范围就是session application的范围就是application
    session 不能设置为application  
    我记得是不可以的....如果说错了.大家别见笑
      

  4.   

    session的id是系统自动生成的.每次都不一样.如果你关掉页面在此访问时.这次的id和上次一定不同
      

  5.   

    yunxiang(无名)
      谢谢你的连接,他是用表来控制,我想用Session,不知道能不能实现
      

  6.   

    不行的
    从别的机器上无法读出你已登录的那个机器的session,除非用用户名在表中做关联
    读不到session也就无法做是否登录的判断了把已登录的用户放一份在application中是个解决办法
      

  7.   

    也可以, 我觉得可以把ip地址作为判断用户惟一的标示.当一个用户登陆.你把ip地址和用户id存入application(如果该用户id已经存在application中,再判断ip是否一致,如果一致.通过.如果不同,登陆失败)
      

  8.   

    但是如果你此时登陆了.然后第二天你想用别的机器登陆.
    可是这时候服务还没有重启过.那你就无法登陆了.
    所以你还需要定时清理application中的数据.
      

  9.   

    yunxiang(无名)
    当一个用户登陆.你把ip地址和用户id存入application(如果该用户id已经存在application中,再判断ip是否一致,如果一致.通过.如果不同,登陆失败)很苯的问题:
    怎样把这些放到application里面,能给出代码吗,谢谢了:)
      

  10.   

    jsp中
        application.setAttribute("a",new Object());----------------------------
    servlet中
        ServletContext  application=request.getSession().getServletContext();
        application.setAttribute("a",new Object());
    ------------------------------------
      

  11.   

    yunxiang(无名)
       ServletContext  application=request.getSession().getServletContext();
    ---------------------------
    request对象的import内容是什么呀,实在不好意思