论坛首页 入门技术论坛

基于struts单用户登录

浏览 4908 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-11  

我弟弟正在搞一个基于struts实现单用户登录的功能,他整理了一个他实现的思路,我还没来得及细看,先分享给大家,看看有没有什么问题和改进的地方呵呵。

 

以下是我弟弟整理的:

 

 

基于struts单用户登录
========================
实现效果:
    当同一帐号在不同的地点,同时在线登录第二次时,那么此时第一次登录的用户做任何操作都会跳转至指定页面。。。

伪代码:

1. 监听器:(Listener)
  监控对session值操作:(让类 实现 HttpSessionAttributeListener 接口)
    1.1 当对session赋值时,进行判断:
            if( 当前操作中的键 为“登录监听”){
                则把该用户加入到在线用户列表中。
            }
    1.2 当对session的值做移除操作时,进行判断:
            if( 当前操作中的键 为“登录监听”){
                if(当前用户在在线列表中,并且,列表中的sessionId是否和当前的sessionID相等){
                    把 当前用户从全局 列表 中移除
                }
            }

2. 过滤器(Filter)

    过滤所有操作:
    2.1. 当做过滤操作时,
        if( 该操作不为空 ,并且 ,该操作不为空字符串 并且, 该操作是否不为登录 ){
            if( session 中 存在标识 “用户名”[因为用户名是不允许重复] ){
                if( 在线列表中 存在当前用户 ){
                    if( 当前的sessionID 和 在线列表中 以当前用户为标识的 sessionID 相等 ){
                        通过过滤器
                    } else {
                        销毁session
                      直接跳转到指定页面
                    }
                } else {
                    销毁session
                    直接跳转到指定页面
                }
          } else {
              直接调转到指定页面
          }
        } else {
            通过过滤器
        }
       
3. 在线用户列表: (public static Map<String ,String>)
   
    类中的属性
    3. public static Map<String, String> onlineUser = new HashMap<String, String>();
   
    类中的方法列表:
    3.1. 得到在线用户Map
    3.2. 添加在线用户
    3.3. 得到在线用户的sessionId
    3.4. 判断用户是否已经登录
    3.5. 移除在线用户

4. 登录Action (LoginAction)

    类中的方法列表:
    4.1. 用户登录
    4.2. 用户退出

   发表时间:2009-06-12  

贴代码
0 请登录后投票
   发表时间:2009-06-12  
看了下没什么问题
0 请登录后投票
   发表时间:2009-06-30  
有没有源代码?贴出来看一下~~
0 请登录后投票
   发表时间:2009-07-13  
代码已经发出来了,请参见这里:http://www.iteye.com/topic/424902
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics