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

本文详细介绍了如何在HTTPSession中存储不可变对象与可变对象。对于不可变对象,如int和String类型,一旦创建就不能更改,需通过setAttribute方法替换新对象;而对于可变对象,如ArrayList类型,则直接修改其内容即可更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,直接更新该可变对象即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值