使用Struts2在Cookies中保存会话对象

时间:2011-07-28 17:29:34

标签: java session cookies struts2

是否有一种简单的方法可以将我的会话对象存储在cookie中而不是使用Struts2存储在内存中?

由于

1 个答案:

答案 0 :(得分:2)

您可以尝试设置cookie所需的值,然后根据您的需要,您可以使用Interceptor或Action读取它。以下是我在Struts2中设置cookie的方法。

setCookie方法,作为参数传递响应,cookie名称,cookie值和句点

回复:

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方法,作为参数传递请求对象和cookie名称

请求:

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