读书人

Dao中怎么取得HttpSession中的数据

发布时间: 2012-10-27 10:42:25 作者: rapoo

Dao中如何取得HttpSession中的数据


如何在Dao中取得HttpSession中的数据,在用aspectJ做权限判断时需要读取HttpSession的相关信息,应该如何读取?当然不能直接传递session到dao中,查了资料比较好的办法是在filter中初始化session,用ThreadLocal来存储,可能是我对ThreadLocal的理解还不清晰,写了一个跑不起来,大家说应该如何写?
(getHttpSession()方法即使在filter中初始化后读出来的数据也还是空的)这里为了简单起见,ThreadLocal中假设只存用户id这个String类型信息

  1. public?class?HttpSessionFactory?{ ??
  2. ??
  3. ????public?static?final?ThreadLocal<String>?httpSession?=?new?ThreadLocal<String>(); ??
  4. ?????public?static?String?getHttpSession()?{ ??
  5. ????????????return?(String)?httpSession.get(); ??
  6. ????????} ??
  7. ????? ??
  8. ?????public?static?void?setHttpSession(String?userId)?{ ??
  9. ????????????if(httpSession==null){ ??
  10. ????????????????httpSession.set(userId); ??
  11. ????????????} ??
  12. ????????} ??
  13. }??
1 楼 klyuan 2007-06-25 不管怎么样,你这样搞都是不合理的 2 楼 ddandyy 2007-06-25 想取得session中的什么数据

session不能传 只传里面你需要的数据不行么 3 楼 snowman6002 2007-06-26 可以用request 4 楼 davis129 2007-10-20 都答非所问啊,楼主问怎么用ThreadLocal实现存储HttpSession内的信息,然后AOP等来或得此数据啊。不是用参数传递啊,那样就要改其他类了,偶合性也增强了啊
谁知道啊? 5 楼 davis129 2007-10-20 # if(httpSession==null){
# httpSession.set(userId);
# }

这里是进不去的,应该是httpSession!=null,这样当然拿不到值了,我已经可以用了! 6 楼 davis129 2007-10-20 你这if判断没什么用,去了就行

读书人网 >软件架构设计

热点推荐