2016-01-08 54 views
-1

我正在嘗試以下代碼 用戶登錄時我想將其用戶標識存儲在應用程序作用域中。 像當用戶登錄時,將用戶標識存儲在應用程序範圍內

Map application = ActionContext.getContext().getApplication(); 
       Set<Long> logins = (Set<Long>) application.get("logins"); 
       if (logins == null) { 
        application.put("logins", logins); 
       } else { 
        Set app = (Set<Long>) application.get("logins"); 
        app.add(userid); 
        application.put("logins", app); 
       } 
       Set<Long> logins1 = (Set<Long>) application.get("logins"); 
       for(long l:logins1){ 
        System.out.println(" "+l); 
       } 

,每當用戶登出我想從應用程序變量刪除其ID。

上面的代碼問題不起作用爲我的目的如何實現這一目標?

+0

定義*不工作*。另外考慮[在Java EE 6+中使用'@ Singleton' EJB](http://stackoverflow.com/q/26733141/1654265),或者如果沒有,則使用Spring Singleton Bean(或其他)。 –

回答

0

難道你不認爲你應該初始化「登錄」變量爲空時。 而不是

if (logins == null) 
    { 
       application.put("logins", logins); 
    } 

嘗試使用這樣的:

if (logins == null) 
    { 
       login = new Set<>(); 
       application.put("logins", logins); 
    } 

你沒有帶指定的任何錯誤或你想要做什麼。請具體獲得進一步的幫助。

+1

您可能有興趣瞭解如何在StackOverflow上格式化代碼。你在加入&nbps;,
等等時會做出不必要的努力,但它們根本不需要。只需放入四個空格,它就變成了代碼,或者使用編輯器的代碼按鈕{{}},或者在內聯代碼片段中使用粗體\'(Linux上的Alt + 96,我的語言環境)。 –

+0

我錯過了這個部分'login = new Set <>(); 「現在它正在工作 – xrcwrn

1

下面的代碼似乎工作。但是,當然,如果用戶丟棄會話或會話超時,用戶仍將被記錄爲已登錄。

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; 
} 
相關問題