假设:
我有一个List<ComplexObjectThatContainsOtherObjectsAndEvenLists>
,我想在页面/请求中保留这些数据。此对象非常大,最多包含1000个对象。
当前实施:
我目前正在做的是serializing
这个复杂的对象在下面使用(我刚刚在SO中找到了这个代码,我感谢作者,我很遗憾,我很抱歉,对不起)
public static String serialize(Object object) {
ByteArrayOutputStream byteaOut = new ByteArrayOutputStream();
GZIPOutputStream gzipOut = null;
try {
gzipOut = new GZIPOutputStream(new Base64OutputStream(byteaOut));
gzipOut.write(new Gson().toJson(object).getBytes("UTF-8"));
} catch(Exception e) {
return null;
} finally {
if (gzipOut != null) try { gzipOut.close(); } catch (IOException logOrIgnore) {}
}
return new String(byteaOut.toByteArray());
}
并将String
输出<input type="hidden">
隐藏在我的页面中,并在需要时将其传回我的控制器。该字符串的长度约为1300-2000个字符。
问题:
将此String
保存在会话中更好吗? (见下文)
session.setAttribute("mySerializedString", mySerializedString);
你能否提供优点和缺点?
到目前为止我的利弊(我不确定):
我不确定但hidden
实现我认为在页面呈现时会产生影响(因为它太长了)以及何时将其提交回控制器,尽管这不会给我带来麻烦如果我选择session
实现,则取消设置会话变量。