繁体   English   中英

删除名称以特定名称开头的会话属性

[英]Remove session attributes which name starts from specific name

在我的 servlet 中,如果我想删除我运行的特定session属性:

session.removeAttribute("user");

我想删除所有这些:

session.invalidate();

如何仅删除其名称以特定值开头的那些会话属性? 例如改为运行:

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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM