存储不可变对象时回话跟踪所采用的一般方式:
HttpSession session = request.getSession();
SomeImmutableClass value=(SomeImmutableClass)session.getAttribute("someIdentifier");
if(value==null){
value =new SomeImmutableClass(...);
}else {
value = new SomeImmutableClass( calculatedForm(value));
}
session.setAttribute("someIdentifier",value);
dosomethingwith(value);
存储可变对象时,仅当会话中不存在这种对象时才分配对象并调用setAttribute,每次都是改变对象的内容,会话维护对同一个对象的应用。