首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

请问关于HttpSessionAttributeListener的有关问题(初学)

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

请教关于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操作

我在一个方法里……

[解决办法]
帮顶 .

热点排行