HttpSession,session.getAttribute(),问题

时间:2011-04-12 07:59:41

标签: java jsp session servlets

我遇到了与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);

感谢。

4 个答案:

答案 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);
}

即。如果它已经不存在,则创建一个新的向量。