2011-07-28 4 views
3

Existe-t-il un moyen facile de stocker mes objets de session dans les cookies à la place en mémoire avec Struts2?Enregistrer les objets de session dans les cookies avec Struts2

Merci

+1

Pas vraiment. Il y a une limite aux données de cookies et vous ne pourrez donc pas stocker beaucoup de cookies. Si vous parlez de stocker des données simples comme une chaîne, un nombre, un booléen ou un autre type simple, les cookies fonctionneront, mais si vous allez sérialiser un objet complexe dans un cookie, vous risquez de rencontrer des problèmes. De plus, vous devez prendre soin de vous protéger du client qui transmet un objet dans un état que vous n'attendez pas. –

Répondre

2

Vous pouvez essayer de définir la valeur que vous devez les cookies, vous pouvez le lire avec un intercepteur ou d'action, en fonction de ce que vous avez besoin. Voici comment je définis les cookies dans Struts2.

La méthode de setCookie, en tant que paramètres passent réponse, nom de cookie, la valeur de biscuit, et la période

réponse:

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

et période, comme ceci: 60 * 60 * 24 * 365 (pour un an)

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

la méthode getCookie, en tant que paramètres passent l'objet de requête et nom du cookie

demande:

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; 
} 
Questions connexes