序列化对象并将其作为字符串存储在cookie中

时间:2016-02-29 12:23:19

标签: java spring

我是java spring mvc developer我有一个对象,我想将它存储在cookie中,但我不知道如何序列化对象来保存它 有人可以帮帮我吗?或者可以建议在cookie中存储对象的其他想法?

2 个答案:

答案 0 :(得分:1)

Cookie的大小最多可达4Mb。这对于存储对象可能不是很有用。您应该考虑使用HTML5存储作为替代方案。

答案 1 :(得分:1)

您可以在cookie中以任何String格式描述对象。

toString()为您的对象构建自定义String和构造函数。写入cookie ojectToSave.toString()并从cookie构造中读取objectToLoad = new MyObject(cookieString)

实施例

public class MyObject(){

    private String username;
    private int rank;
    private OtherObject otherObject;

    //Constructors,getters,setters,rest of class
    //...

    public MyObject(String s){
         this();
         //Trim class delimiter (  )
         String trimedStr = s.replaceAll("\(\\$", "").replaceAll("^\)\\", "");

         //parse string
         String[] components = trimedStr.split(",");
         this.username = components[0];
         this.rank     = Integer.valueOf(components[1]);
         //Otherobject should be constructed similar
         this.otherobject = new OtherObject(components[2]);
    }

    public String toString(){
        return "("+username+","+rank+","+otherObject.toString()+")";
    }
 }

我使用"(",")"来分隔对象,但这不是必需的。如果OtherObject包含2个字符串值,它将如下所示:

(radu, 964 , ( string1 , string2 ) )

但如果您没有其他对象,则可以跳过"(",")"或仅存储为一个列表

(radu, 964 , string1 , string2 )

并拥有this.otherobject = new OtherObject(components[2],components[3]);

使用JSON format and Jackson不必自己构建字符串格式(并在每次更改对象类定义时修改它)