日期:2014-05-19  浏览次数:20742 次

请教关于HttpSessionAttributeListener的问题(初学)
我开始学习的时候写了一个类,这个类implements HttpSessionAttributeListener

然后在attributeAdded方法里面得到每个登录的Session,在Session里面得到userId

具体写法是:

Java code

int userid=0;
public void attributeAdded(HttpSessionBindingEvent arg0) {
        // TODO 自动生成方法存根
        if(arg0.getSession().getAttribute("user")!=null){
            Login login=(Login)arg0.getSession().getAttribute("user");
            userid=login.getUid();
            //System.out.println(userid);
        }
    }




插入日志的方法如下:
Java code

public boolean addLog(String log,String type){        
        boolean bool=false;
        if(userid!=0){
            Object[] parpre=new Object[4];
            parpre[0]=userid;
            parpre[1]=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
            parpre[2]=type;
            parpre[3]=log;
            bool=sqlhelp.executeUpdate("insert into log (managerid,datetime,acttype,loginfo) values (?,?,?,?)",parpre);
        }
        return bool;
    }



现在问题来了,因为以前理解错误。。。以为每个Session都是独立的,现在发现,这个userid,只是记录最后一个登录的人的userid。。杯具呀。。。现在日志表很混乱,userID都不对的。。有什么简单的方法可以把这段代码改掉么?

我的架构只是简单的JSP+Servlet

请各位大大帮忙呀~~3Q。。。

------解决方案--------------------
探讨
我开始学习的时候写了一个类,这个类implements HttpSessionAttributeListener

然后在attributeAdded方法里面得到每个登录的Session,在Session里面得到userId

具体写法是:


Java code

int userid=0;
public void attributeAdded(HttpSessionBind……

------解决方案--------------------
你到底要干嘛啊?你自己定义一个ID又干嘛啊?
------解决方案--------------------
你在登录成功的时候把userId放入session里面了吗
------解决方案--------------------
userSession.setAttribute(user.getId(), user)
------解决方案--------------------
attributeAdded是用户登陆时调用的方法.每个用户登陆后都会覆盖你的userID,你要做日志根本不需要记录这个值,每次去session里面取就行了
------解决方案--------------------
探讨

引用:
attributeAdded是用户登陆时调用的方法.每个用户登陆后都会覆盖你的userID,你要做日志根本不需要记录这个值,每次去session里面取就行了


我知道每次去取就行了
问题是怎么取?

比如 insert操作

我在一个方法里面做insert,然后要插入日志,这个insert的方法是servlet跳转,servle……

------解决方案--------------------
这样,你会AOP么,如果会的话,做一个aop after通知,在某些service方法进行拦截,可以取到HttpServletRequest,然后再取userID
------解决方案--------------------
探讨
引用:
引用:

引用:
attributeAdded是用户登陆时调用的方法.每个用户登陆后都会覆盖你的userID,你要做日志根本不需要记录这个值,每次去session里面取就行了


我知道每次去取就行了
问题是怎么取?

比如 insert操作

我在一个方法里……

------解决方案--------------------
帮顶 .