2011-07-28 21 views
3

セッションオブジェクトをStruts2のメモリではなくクッキーに保存する簡単な方法はありますか?セッションオブジェクトをStruts2でクッキーに保存

おかげ

+1

クッキーのデータには制限があり、クッキーに保存することはできません。文字列、数値、ブール値、または他の単純な型のような単純なデータを格納することについて話している場合は、クッキーは機能しますが、複雑なオブジェクトをクッキーに直列化する場合、問題が発生する可能性があります。さらに、期待していない状態でオブジェクトを送信するクライアントから身を守るように注意する必要があります。 –

答えて

2

あなたは、あなたは何が必要に応じて、インターセプタまたはアクションでそれを読むことができ、あなたがクッキーに必要な値を設定してみてください。 Struts2でクッキーを設定する方法は次のとおりです。

ますsetcookie法、パラメータは応答、クッキー名、クッキー値、および期間を通過する

応答:

HttpServletResponse response = (HttpServletResponse) 
ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE); 

及び期間、このような何か: 60 * 60 * 24 * 365(

public static void setCookie(HttpServletResponse response, String name, String value, int period) { 

    try { 

     Cookie div = new Cookie(name, value); 
     div.setMaxAge(60 * 60 * 24 * 365); // Make the cookie last a year 
     response.addCookie(div); 

    } catch (Exception e) { 
     Logger.getLogger(StrutsUtils.class.getName()).log(Level.INFO, "message", e); 
    } 
} 

getCookieメソッド)年のため、パラメータは、リクエストオブジェクトやクッキー名を渡すよう

リクエスト:

HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); 


public static String getCookie(HttpServletRequest request, String name) { 

    String value = null; 

    try { 

     for (Cookie c : request.getCookies()) { 
      if (c.getName().equals(name)) { 
       value = c.getValue(); 
      } 
     } 

    } catch (Exception e) { 
     Logger.getLogger(StrutsUtils.class.getName()).log(Level.INFO, "message", e); 
    } 

    return value; 
} 
関連する問題