字符串压缩:通过URL传递对象

时间:2013-09-02 07:48:40

标签: java json object compression url-parameters

我有两页,比如A和B.用户从Page-A导航到Page-B。 Page-B需要有一些从Page-A传递的值。在这些值中,有些是对象。现在我有以下方法将参数传递给Page-B

  • 将对象存储在某个范围内(例如Session,Page-Flow)。
  • 将对象转换为String后,将对象作为查询字符串传递。

以上两种方式的缺点分别如下:

  • 如果用户为Page-B预订以供以后使用,并尝试从不同的会话访问它,则会生成异常。由于对象不在范围内。
  • 网址长度有限制,即2048字符(ref)。因此,如果我将其转换为JSON并尝试通过URL传递它,如果JSON字符串超过有限字符,我将从Page-B获得JSON异常。

我可以压缩Object的String表示形式,使其不超过限制Character?

如何解决此问题(通过任何其他方式)?

非常感谢任何解决方案。

1 个答案:

答案 0 :(得分:1)

将序列化对象放在URL中是一个非常糟糕的主意。如果您想通过URL(GET参数)访问状态,那么通常URL应该只包含一些识别相关项目的方法。

幸运的是,如果您使用数据库后端来保存对象,那么数据库通常会以主键的形式为您提供身份。然后,您可以将ID放入URL中,并在收到请求时让Java检索该ID的对象。

如果您不使用数据库后端,那么由您自己决定为对象提供可以找到的标识。最简单的解决方案是在地图中存储对象的引用,并将映射键放在URL中。