application问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 06:20:36
String message=request.getParameter("message");
List lst=(List)application.getAttribute("ms");
String name=session.getAttribute("login").toString();

if(lst==null||lst.size()==0){
lst=new ArrayList();
application.setAttribute("ms",lst);
}

if(message!=null || !message.equals("")){
lst.add(name+":"+message);
}

第一次执行的时候第一个if条件成立lst=new ArrayList(); lst.add()是添加到 new ArrayList();里的。当第二次执行程序时第一个if条件不成立,所以lst.add()是添加到(List)application.getAttribute("ms")的lst里,两个添加的lst不同,为什么打印application时添加进去的值都能打出来。还有按程序执行顺序,是不是要把application.setAttribute("ms",lst);写在第二个if外

昏迷死了,谁跟你说两个list不一样了啊。
你第一次if成立的时候,不是调用set了吗,这时候app的get函数就是new出来的这个list,而不是原先那个了啊。
算了,我还是直接写名字吧,缩略名你总能看懂吧。。比如app是指application。。

好吧,初始状态
app:attr:"ms" = listA
第一遍
lst = new list(),我们叫他listB好了,
然后listB: messageA,
然后你set了,这时候:
app: attr: "ms" = listB
第二遍
lst = app.get..
所以lst = listB
然后你add了,listB原有messageA
所以现在是listB:messageA,messageB
你说输出是多少????
至于setAtt写在哪,那是你自己的事,我又不知道你这段程序干啥的。

还有,你学编程多久了。。。为什么我不知道你在用什么东西,但是你提的问题又这么基础。。?