起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: davidhuang

[处理中5] 流程问题

[复制链接]

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
 楼主| 发表于 2015-8-17 17:01:32 | 显示全部楼层
本帖最后由 davidhuang 于 2015-8-18 09:27 编辑

我在loginActio里好像获取不了session, 你们是怎么获取session的?
httpsession.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2015-8-18 08:53:16 | 显示全部楼层
com.justep.system.context.ContextHelper.getSessionContext().getSession()
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
 楼主| 发表于 2015-8-18 09:28:15 | 显示全部楼层
jishuang 发表于 2015-8-18 08:53
com.justep.system.context.ContextHelper.getSessionContext().getSession()

你看看上图,biz层获取不了HttpSession对象
回复 支持 反对

使用道具 举报

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
 楼主| 发表于 2015-8-18 09:28:39 | 显示全部楼层
jishuang 发表于 2015-8-18 08:53
com.justep.system.context.ContextHelper.getSessionContext().getSession()

你看看上图,biz层获取不了HttpSession对象
httpsession.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2015-8-18 11:00:30 | 显示全部楼层
这个API就是BIZ用的
这个错误是因为没有导入需要的java类型

在BIZ层的构建路径中把tomcat的lib下的servlet-api.jar导入
然后在java文件中import相关的java类
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
 楼主| 发表于 2015-8-18 11:59:18 | 显示全部楼层
本帖最后由 davidhuang 于 2015-8-18 12:08 编辑

可以加一个登录前事件,在这个事件中实现以下逻辑:
判断当前登录用户ID是否在“已登录用户”Map中,
如果不在,将当前用户及session对象添加到“已登录用户”Map中;
如果在,取出之前登录用户对应的session对象,设置为无效,并将当前登录用户和session添加到Map中;

注意:那个Map需要用线程安全的Map。

以上方案在非集群中可以使用,在集群中不行;

判断当前登录用户ID是否在“已登录用户”Map中, 请问登录前事件如何获取当前登录用户ID

我用了这个语句
String userID = ContextHelper.getOperator().getID();,
报如下错误  : JUSTEP180002; 提示: 操作者不存在,需要登录后使用

应该是在登录后事件中加代码吧?

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2015-8-18 17:06:58 | 显示全部楼层
登录用的应该是code可以直接把登录输入的这个存起来
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

480

主题

1283

帖子

4476

积分

论坛元老

Rank: 8Rank: 8

积分
4476
QQ
 楼主| 发表于 2015-8-20 08:26:27 | 显示全部楼层
本帖最后由 davidhuang 于 2015-8-20 09:18 编辑

这是我的做法,测试好像通过了, 登录在AfterLogin处理,退出在BeforeLogout处理

public class System {

   private static ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap();


   

        public static void systemProcessAfterLoginAction() {
           HttpSession session = ContextHelper.getSessionContext().getSession();

           String userID = ContextHelper.getOperator().getID();
           
           
           
           Object object = concurrentHashMap.get(userID);
           
           if( object  == null ){
                   concurrentHashMap.put(userID, session);  
           }else{
                   HttpSession session1 = (HttpSession)object;
                   concurrentHashMap.remove(userID);
                   session1.invalidate();
                   concurrentHashMap.put(userID, session);
                  
           }
               
               
        }



        public static void systemProcessBeforeLogoutAction() {
               
                String userID = ContextHelper.getOperator().getID();
               
                Object object = concurrentHashMap.get(userID);
               
                concurrentHashMap.remove(userID);
               
                HttpSession session1 = (HttpSession)object;
                session1.invalidate();
               
                concurrentHashMap.remove(userID);
               
               
               
               
        }
}
回复 支持 反对

使用道具 举报

54

主题

247

帖子

632

积分

高级会员

Rank: 4

积分
632
QQ
发表于 2018-1-5 11:01:21 | 显示全部楼层
davidhuang 发表于 2015-8-20 08:26
这是我的做法,测试好像通过了, 登录在AfterLogin处理,退出在BeforeLogout处理

public class System {

我也需要这样做,不清楚怎么添加,请给出详细的说明,万分感谢
回复 支持 反对

使用道具 举报

54

主题

247

帖子

632

积分

高级会员

Rank: 4

积分
632
QQ
发表于 2018-1-5 11:17:51 | 显示全部楼层
davidhuang 发表于 2015-8-20 08:26
这是我的做法,测试好像通过了, 登录在AfterLogin处理,退出在BeforeLogout处理

public class System {

你好,我也需要像你这样的问题,该具体怎么做,请帮助谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-25 22:54 , Processed in 0.074839 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表