Java 用户登录时在应用程序范围中存储用户ID

Java 用户登录时在应用程序范围中存储用户ID,java,Java,我正在尝试下面的代码 当用户登录时,我想在应用程序范围中存储他的用户ID。 像 Map application=ActionContext.getContext().getApplication(); Set logins=(Set)application.get(“logins”); 如果(登录=空){ 应用程序。放置(“登录”,登录); }否则{ Set app=(Set)application.get(“登录”); app.add(userid); application.put(“登录”

我正在尝试下面的代码 当用户登录时,我想在应用程序范围中存储他的用户ID。 像

Map application=ActionContext.getContext().getApplication();
Set logins=(Set)application.get(“logins”);
如果(登录=空){
应用程序。放置(“登录”,登录);
}否则{
Set app=(Set)application.get(“登录”);
app.add(userid);
application.put(“登录”,app);
}
Set logins1=(Set)application.get(“logins”);
用于(长l:登录1){
系统输出打印项次(“+l”);
}
每当用户注销时,我想从应用程序变量中删除其id


上述代码的问题不符合我的目的,如何实现这一点?

您不认为应该在“logins”变量为空时初始化它吗。 而不是

if (logins == null) 
  { 
              application.put("logins", logins); 
  } 
尝试使用以下方法:

if (logins == null) 
  { 
              login = new Set<>(); 
              application.put("logins", logins); 
  } 
if(登录=null)
{ 
login=newset();
应用程序。放置(“登录”,登录);
} 

您没有指定任何错误或要执行的操作。请详细说明以获得进一步帮助。

下面的代码似乎有效。当然,如果用户放弃会话或会话超时,用户仍将被视为已登录

private String user;
private List<Long> ids;
private List<Long> getUsers(){
    Map app = (Map) ActionContext.getContext().get("application");
    return app.get("users")==null? new ArrayList<Long>():(List<Long>) app.get("users");
}
private void putUsers(List<Long> users){
    Map app = (Map) ActionContext.getContext().get("application");
    app.put("users",users);
    return;
}
public String login(){
    Long userId = 0l;
    if(StringUtils.isNumeric(user)){
        userId=  Long.valueOf(user);
    }
    if(userId >0){
        ids = getUsers();
        if(!ids.contains(userId)){
            ids.add(userId);
            putUsers(ids);
        }
    }

    return "success";
}
public String logout(){
    Long userId = 0l;
    if(StringUtils.isNumeric(user)){
        userId=  Long.valueOf(user);
    }
    if(userId >0){
        ids = getUsers();
        if(ids.contains(userId)){
            ids.remove(userId);
            putUsers(ids);
        }
    }
    return "success";
}
public String status(){
    ids = getUsers();
    return "success";
}

public List<Long> getIds() {
    return ids;
}

public void setIds(List<Long> ids) {
    this.ids = ids;
}

public String getUser() {
    return user;
}

public void setUser(String user) {
    this.user = user;
}
私有字符串用户;
私有列表ID;
私有列表getUsers(){
Map app=(Map)ActionContext.getContext().get(“应用程序”);
return app.get(“用户”)==null?新建ArrayList():(列表)app.get(“用户”);
}
私有用户(列表用户){
Map app=(Map)ActionContext.getContext().get(“应用程序”);
app.put(“用户”,用户);
返回;
}
公共字符串登录(){
长用户标识=0l;
if(StringUtils.isNumeric(用户)){
userId=Long.valueOf(用户);
}
如果(用户ID>0){
ids=getUsers();
如果(!ids.contains(userId)){
add(userId);
计算机用户(ID);
}
}
返回“成功”;
}
公共字符串注销(){
长用户标识=0l;
if(StringUtils.isNumeric(用户)){
userId=Long.valueOf(用户);
}
如果(用户ID>0){
ids=getUsers();
if(id.contains(userId)){
id.remove(userId);
计算机用户(ID);
}
}
返回“成功”;
}
公共字符串状态(){
ids=getUsers();
返回“成功”;
}
公共列表getIds(){
返回ID;
}
公共无效集合ID(列表ID){
this.ids=ids;
}
公共字符串getUser(){
返回用户;
}
公共void setUser(字符串用户){
this.user=用户;
}

您可能有兴趣在谷歌上搜索如何在StackOverflow上格式化代码。您在添加&nbps;时付出了大量不必要的努力<等等。。。但根本不需要它们。只要放四个空格,它就变成了代码,或者使用编辑器的
{}
code按钮,或者使用粗的“`”(Win上的Alt+96,Linux上的Alt+,在我的语言环境中)作为内联代码段现在它正在工作定义不工作。如果没有,也可以考虑,或者弹簧单豆(或任何)。
private String user;
private List<Long> ids;
private List<Long> getUsers(){
    Map app = (Map) ActionContext.getContext().get("application");
    return app.get("users")==null? new ArrayList<Long>():(List<Long>) app.get("users");
}
private void putUsers(List<Long> users){
    Map app = (Map) ActionContext.getContext().get("application");
    app.put("users",users);
    return;
}
public String login(){
    Long userId = 0l;
    if(StringUtils.isNumeric(user)){
        userId=  Long.valueOf(user);
    }
    if(userId >0){
        ids = getUsers();
        if(!ids.contains(userId)){
            ids.add(userId);
            putUsers(ids);
        }
    }

    return "success";
}
public String logout(){
    Long userId = 0l;
    if(StringUtils.isNumeric(user)){
        userId=  Long.valueOf(user);
    }
    if(userId >0){
        ids = getUsers();
        if(ids.contains(userId)){
            ids.remove(userId);
            putUsers(ids);
        }
    }
    return "success";
}
public String status(){
    ids = getUsers();
    return "success";
}

public List<Long> getIds() {
    return ids;
}

public void setIds(List<Long> ids) {
    this.ids = ids;
}

public String getUser() {
    return user;
}

public void setUser(String user) {
    this.user = user;
}