如何在两次调用控制器方法之间保留数据?

时间:2012-10-27 20:30:10

标签: java jsp

我有2个JSP:pay.jspconfirmPay.jsp

用户在pay.jsp上提交数据(信用卡#等)。此数据在后端验证,并与confirmPay.jsp上的其他一些数据一起显示。点击“确认”后,数据(来自pay.jsp页面)用于结算。如果他点击“取消”,则会放弃付款。

这里重要的事情是:

  1. 数据只能在pay.jsp
  2. 中修改
  3. 应在两次通话之间保留数据
  4. 我知道这个问题类似于How to preserve the ModelMap between form submits?。只是想知道什么适用于这种情况,涉及敏感信息(如信用卡#)。将它放在一个会话中意味着同一个函数中的多个调用会产生问题。

    请帮助我了解最佳选择。

1 个答案:

答案 0 :(得分:2)

如果您担心会话中存储敏感数据,请不要担心。会话在服务器端的内存中保存。它不会通过网络连接,也无法从网络上的入侵者的浏览器内存中读取。

如果您担心用户在同一页面上有多个已打开的浏览器标签或框架,并且在同一会话中并行发送多笔付款,那么这是一个非常有效的问题。我倾向于选择无状态解决方案,因此如果隐藏字段是可接受的解决方案,那么只需使用它们来维护从一个页面到下一个页面的状态。这不会导致多个选项卡出现任何问题。如果您需要使用会话来存储中间状态,那么您可以简单地生成唯一ID(例如,使用序列号),使用唯一ID作为会话属性将数据存储在会话中,并传递此唯一ID frompage使用隐藏字段进行翻页。这样,多个选项卡将使用不同的会话属性,并且不会互相干扰。