Java 使用Struts2将会话对象保存在Cookie中

Java 使用Struts2将会话对象保存在Cookie中,java,session,cookies,struts2,Java,Session,Cookies,Struts2,是否有一种简单的方法可以将会话对象存储在cookies中,而不是使用Struts2存储在内存中 谢谢您可以尝试将您需要的值设置为cookies,然后您可以根据需要使用拦截器或操作来读取它。下面是我如何在Struts2中设置cookies的 setCookie方法,作为参数传递响应、cookie名称、cookie值和周期 答复: HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(

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


谢谢

您可以尝试将您需要的值设置为cookies,然后您可以根据需要使用拦截器或操作来读取它。下面是我如何在Struts2中设置cookies的

setCookie方法,作为参数传递响应、cookie名称、cookie值和周期

答复:

HttpServletResponse response = (HttpServletResponse) 
ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
这段时间,大概是这样的: 60*60*24*365(一年)

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

不是真的。cookie数据是有限制的,因此您无法在cookie中存储太多数据。如果您正在谈论存储简单数据,如字符串、数字、布尔值或其他简单类型,那么cookie将起作用,但如果您要将复杂对象序列化为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;
}