删除名称以特定名称开头的会话属性
Remove session attributes which name starts from specific name
在我的 servlet 中,如果我想删除特定的 session
属性,我 运行:
session.removeAttribute("user");
我想删除所有这些:
session.invalidate();
如何只删除名称以特定值开头的那些会话属性?例如改为 运行ning:
session.removeAttribute("userDsdf");
session.removeAttribute("userSDFSF");
session.removeAttribute("userVSDfs");
session.removeAttribute("userESFDFS");
运行 类似于 session.removeAttribute("user%");
没有方法可以准确地完成这项工作,但您可以通过枚举属性和过滤自己完成:
Enumeration<String> attributes = session.getAttributeNames();
while (attributes.hasMoreElements()) {
String next = attributes.nextElement();
if (!next.startsWith("user")) continue;
session.removeAttribute(next);
}
您可以使用流遍历属性名称:
Collections.list(session.getAttributeNames()).stream()
.filter(a -> a.startsWith("user"))
.forEach(a -> session.removeAttribute(a));
在我的 servlet 中,如果我想删除特定的 session
属性,我 运行:
session.removeAttribute("user");
我想删除所有这些:
session.invalidate();
如何只删除名称以特定值开头的那些会话属性?例如改为 运行ning:
session.removeAttribute("userDsdf");
session.removeAttribute("userSDFSF");
session.removeAttribute("userVSDfs");
session.removeAttribute("userESFDFS");
运行 类似于 session.removeAttribute("user%");
没有方法可以准确地完成这项工作,但您可以通过枚举属性和过滤自己完成:
Enumeration<String> attributes = session.getAttributeNames();
while (attributes.hasMoreElements()) {
String next = attributes.nextElement();
if (!next.startsWith("user")) continue;
session.removeAttribute(next);
}
您可以使用流遍历属性名称:
Collections.list(session.getAttributeNames()).stream()
.filter(a -> a.startsWith("user"))
.forEach(a -> session.removeAttribute(a));