我遇到了与Java servlet会话相关的问题。我不明白为什么在getAttribute()
之前使用会话对象的setAttribute();
函数。这是代码:
Vector buylist=(Vector)session.getAttribute("Register");
if (action.equals("del")) {
String del = request.getParameter("deli");
int d = (new Integer(del)).intValue();
buylist.removeElementAt(d);
}
session.setAttribute("Register", buylist);
感谢。
答案 0 :(得分:1)
此代码旨在保存由Register会话属性表示的修改后的向量。 但是,即使在删除或添加某些元素之后,您也不需要设置该属性,因为它的引用无论如何都存储在会话中,并且对它的任何更改实际上都应用于相同的对象。
答案 1 :(得分:0)
因为Register
属性可以从其他地方设置(例如。来自jsp(在坏的情况下),Servlet或Filter。)
答案 2 :(得分:0)
我能想到的唯一解释是:首先,您检索向量,然后进行更改,然后将其存储回会话对象。
答案 3 :(得分:0)
代码被破坏或setAttribute()
无效。
如果从会话中获得可变容器(如列表或向量),则无需再次将其放入会话中。它相当于这段代码:
session.setAttribute("Register", buylist);
session.setAttribute("Register", buylist);
session.setAttribute("Register", buylist);
没有,但第一行有效。
另一种可能性是代码有一个错误,真正的意思是:
Vector buylist = session.getAttribute("Register");
if( buylist == null ) {
buylist = new Vector();
session.setAttribute("Register", buylist);
}
即。如果它已经不存在,则创建一个新的向量。