有没有办法将Java对象放入JSP的POST请求中?

时间:2009-11-06 20:29:41

标签: java jsp post

我有一个呈现的JSP页面,并调用Web服务来加载一些初始数据。用户填写一些表单信息,然后将其提交给服务器,服务器可能返回相同的JSP页面以进行进一步处理(以及另一个提交)。初始数据永远不会改变,但它是一个对象表示,所以我试图弄清楚如何在每个POST之间维护它,所以我并不总是调用该服务。会话变量是唯一的方法吗?任何帮助表示赞赏。谢谢!

5 个答案:

答案 0 :(得分:5)

  

会话变量是唯一的方法吗?

不是唯一但也许是最好的。我没有看到发回和转发对象的任何意义,因为在客户端不需要。此外,它可能会被篡改。

替代方法是serialize your object using Base64 encoding(因此它是text / plain)并存储为隐藏值。

但是,再次,服务器中的内容应该保留在服务器中。

从博客条目中学到的经验教训:Why Isn't My Encryption.. Encrypting?

  

如果不必将其发送到客户端,则不要! 发送到客户端的秘密可能会被篡改和泄露以各种方式不容易看到甚至预测。在我们的例子中,我们可以在服务器上存储登录状态,并避免将任何状态传输到客户端。

答案 1 :(得分:4)

我会在登录时将其填充到会话变量中 - 在客户端中存储数据本身是不安全的。如果您没有使会话过期但是创建它们以便可以将它们序列化为存储而使用支持它的Web容器,则永远不必重新加载它们。

如果这不感兴趣,那么在Web服务周围创建一个缓存,以便结果保留在那里,并在一些不活动后过期。这需要积极清理。

答案 2 :(得分:2)

会话是要走的路。你真的需要每次通过电线发送吗?如果有真正的目的,请考虑JSON,否则使用会话并将其存储在服务器端。

答案 3 :(得分:2)

根据Web服务的设置方式,您可以在您和它之间插入一个缓存层。例如,如果它是一个REST Web服务(或至少一个正确允许缓存GET响应的服务),那么您可以继续从中获取内容,但几乎所有请求都将从本地HTTP缓存中得到应答。

如果决定序列化,可以使用XML,JSON或其他方法,例如Google的Protocol Buffers。使用高度自动化的序列化库,如XStream,您甚至可以自动化JavaBeans的映射。

答案 4 :(得分:1)