如何在Java EE中关闭特定会话

3
如果我有几个会话处于打开状态,如何关闭特定的会话?
String userName = (String) session.getAttribute("userName");
HashMap cartList = (HashMap) session.getAttribute("cartList");

如果我想关闭cartList的会话,我应该使用什么代码?
我尝试使用以下代码:
1. `session.invalidate()` 但它会关闭所有内容。 2. `session.removeAttribute("cartList")` 它没有关闭我的会话。

为什么要关闭会话?会话应该被密切管理,详见此处 => http://www.javapractices.com/topic/TopicAction.do;jsessionid=421CFEEA4A89B7C0709E070A8FA39C24?Id=191 您可以使用httpsession中的removeAttribute来删除Cartlist属性,粗略地说,会话应该在整个登录期间保持,并在用户注销时失效(销毁)。 - Narayan
4个回答

6
您的每个访问者只有一个会话,而不是多个会话。您只需在其中存储属性。通过invalidate()方法“关闭”会话。它将销毁整个会话并解除所有属性的绑定。任何下一个HTTP请求都将导致全新的会话。
您似乎只想取消购物车的绑定。使用removeAttribute("name")方法是正确的做法。它将从会话中删除属性,因此在当前响应和所有后续请求/响应中,不能再通过getAttribute("name")${name}访问该属性。如果它似乎没有起作用,那很可能只是您的误解。
另请参阅:

2

By

String userName = (String) session.getAttribute("userName");
HashMap cartList = (HashMap) session.getAttribute("cartList");

您并不是通过这种方式创建会话,而只是从由session引用的会话中读取属性。


参见


2

session.invalidate() 会解除与该会话绑定的所有对象,而 session.removeAttribute("cartList") 则会将 cartList 对象从会话中解除绑定。


2

尝试访问

HashMap cartList = (HashMap) session.getAttribute("cartList");

session.removeAttribute("cartList");执行后,"cartList"将变为null。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接