2011-08-31 67 views
1

我一遍又一遍地瀏覽Google,但是我找不到有關在緩存中存儲變量的任何信息。我所看到的任何與此事有關的事情看起來都非常複雜,沒有得到很好的解釋。我正在設計一個使用GWT的非常簡單的登錄系統,它使用一個文本文件,根據它們是分別登錄還是退出,通過追加true或false來編輯用戶行。是否可以使用GWT在瀏覽器的緩存中存儲變量(最好是字符串)?

問題是,當用戶刷新窗口時,他們沒有註銷(因爲我不希望他們是),但應用程序已經失去了當前的用戶變量,因此看起來他們已經註銷。我想緩存當前用戶的用戶名,直到他們註銷,以便我可以允許用戶刷新/關閉該選項卡並仍然登錄。我正在尋找一個相當深入的解釋,因爲我有一點/沒有以前的經驗與緩存!如果問題看起來很愚蠢或者解決方案不可行,請告訴我!

回答

1

HTML5是我能找到的最好,最簡單的解決方案。

我使用GWT存儲API,在Eclipse中可以找到here,它非常簡單。如果其他人想要做類似的事情,所有內容都在我提供的鏈接中解釋。

0

GWT沒有提供任何在瀏覽器中存儲價值的選項,但是您可以使用'cookie'在瀏覽器上存儲數據。 GWT將幫助您在瀏覽器上創建和維護Cookie。如果您打算在瀏覽器上存儲更多數據,請使用HTML 5功能。

Google Gear with GWT也將數據存儲在瀏覽器

+0

[Google Gears已停用](http://en.wikipedia.org/wiki/Google_gears#End_of_life),所以我不認爲它是一個非常引人注目的選項。最好查看Cookie或Web存儲。 –

0

你可以通過RCP的數據存儲在用戶會話中,並從服務器onModuleLoad(取吧)(或當你需要它)的選項。從安全角度來看,將登錄狀態存儲在客戶端上是一個壞主意,因爲他可以將其更改爲「登錄」。

1

設置Cookie比這裏描述的要容易得多!我只舉一個例子:

//set a cookie 
    final TextBox t1 = new TextBox(); 
    RootPanel.get().add(t1); 
    final TextBox t2 = new TextBox(); 
    RootPanel.get().add(t2); 

    Button b1 = new Button("safe cookie"); 
    b1.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      // a cookie which expires after one week 
      Date now = new Date(); 
      long nowLong = now.getTime(); 
      nowLong = nowLong + (1000 * 60 * 60 * 24 * 7);// seven days 
      now.setTime(nowLong); 
      Cookies.setCookie(t1.getText(), t2.getText(), now); 
      //if the time isn't set it expires after the tab closes 

     } 
    }); 
    RootPanel.get().add(b1); 

    //get a cookie 
    final TextBox t3 = new TextBox(); 
    RootPanel.get().add(t3); 
    Button b2 = new Button("get cookie by name"); 
    b2.addClickHandler(new ClickHandler() { 

     @Override 
     public void onClick(ClickEvent event) { 
      Window.alert(Cookies.getCookie(t3.getText())); 

     } 
    }); 
    RootPanel.get().add(b2); 

來源:Set Cookies with GWT applications to expire after expected time periodClass Cookies

相關問題