如何更新session.setAttribute(name,value)值,其名称相同?

Som*_*yal 3 java servlets

我有一种情况,我需要更新名称保持不变的setAttribute的值.考虑以下情况作为示例 -
假设我有三个JSP:abc.jsp,xyz.jsp,pqr.jsp.现在首先运行abc.jsp然后控制前进到xyz.jsp然后转发到pqr.jsp.现在执行pqr.jspt后,再次使用setAttribute中的更新值控制回xyz.jsp.
abc.jsp:

ArrayList<Books> getSupplyStatus=new ArrayList<Books>();
JavaBean javaBean=new JavaBean();
session=request.getSession(false);
getSupplyStatus=javaBean.getSupplyStatus(memberID); //It returns a ArrayList 
if(!getSupplyStatus.isEmpty())
{
  session.setAttribute("UpdatedBooklist", getSupplyStatus);
  request.getRequestDispatcher("xyz.jsp").forward(request, response);
}
Run Code Online (Sandbox Code Playgroud)

xyz.jsp:

session=request.getSession(false);
ArrayList<Books> getSupplyStatus=(ArrayList<Books>) session.getAttribute("UpdatedBooklist");
// some operations & forward to pqr.jsp
Run Code Online (Sandbox Code Playgroud)

pqr.jsp:

// in this jsp new ArrayList<Books> will be prodeuced
// & I need to bound the value of "UpdatedBooklist" with 
// which is set in abc.jsp,
// and previous value must be override & then forward to xyz.jsp again
// In xyz.jsp we recieve the updated value.
Run Code Online (Sandbox Code Playgroud)

Dee*_*ala 7

再次使用setAttribute()将替换该值并调用必要的生命周期方法.

如果一个对象已经绑定到这个名字,它实现了HttpSessionBindingListener本次会议,其HttpSessionBindingListener.valueUnbound方法被调用.

您还可以使用removeAttribute()并再次设置具有相同名称的属性.如果通过'update'表示您希望对象更新而不是替换,则获取属性getAttribute()并在其上调用将改变对象的方法.