关于session存储可变对象和不可变对象

HttpSession可以存储键/值对,而其中值可以是不可变对象,也可以是可变对象,下面举例说明。

假设键的类型是Integer.

(1)不可变对象

HttpSession session = request.getSession();
Integer value=(Integer)session.getAttribute("key");
if(key==null){
    //创建value
}else{
    //更新value
}

session.setAttribute("key",value);

 由上面的例子可以看出,session存储的不可变对象(比如int, String类型),一旦建立,不能改变它,每次放置新对象,都是用setAttribute方法替代就对象。

(2)可变对象

HttpSession session =request.getSession();
ArrayList<String> value=(ArrayList<String>)session.getAttribute("key");
if(value==null){
     //创建value;
}

String valueItem=request.getPatameter("valueItem")//从jsp页面读取值
if((valueItem)!=null&&(!valueItem.trim().equals(""))){
    value.add(valueItem)
}
 session存储可变对象,实际存储的是可变对象的引用,更新session时,无需使用setAttribute,直接更新该可变对象即可。

你可能感兴趣的:(session,不可变对象,可变对象)