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,直接更新该可变对象即可。