我有基于jsp和spring mvc的web应用程序,我需要解决此任务:
用户必须能够使用向导对话框添加主实体的新实例。该向导包含3个步骤:
第一步必须有一个允许填充主要实体字段的表单,包括与多对一相关的实体关联(建议使用下拉字段)。表单应包含不同类型的字段:文本,数字,日期,单选按钮等。某些字段应该是必填字段而某些字段不是。 示例:输入姓名,姓氏,出生日期,电话,孩子数量,选择性别(radiobutton),部门(下拉列表)等。
在第二步中,用户填写其他属性,包括与当前相关的多对多关联实体的关联。 示例:将员工与其拥有的技能(复选框)相关联,添加一些注释(textarea)。
在第三步中,前两个步骤中的所有字段都应显示为只读字段。用户应确认将此数据保存到数据库中。用户确认保存后,数据应保存到数据库中,用户应重定向到包含对象列表的页面。
如何在不使用会话的情况下传输和保留信息(Http会话,会话范围)?
答案 0 :(得分:1)
您需要在多个服务器交互中保持状态。有几种可能性,一般而言,诸如要保留的州数据的大小等因素会影响我们的决策。
听起来你在这里有几百个字节,所以你不会受到大小的限制 - 几兆字节会更具挑战性。
第一种可能性,将它全部保存在JavaScript变量的浏览器中,实际上不需要向服务器发送任何内容。这是典型的现代动态Web UI,其中服务器提供数据而不是页面。听起来你在一个多页面的世界,所以打折这个选项。
其次,只是有效地将一些数据(可能是加密的,在cookie中)放入浏览器为您保存数据,但它在页面之间共享。
第三种使用Http Session状态 - 你的情况听起来非常像会话的典型候选者。你为什么要避免它?根据您的服务器功能,此方法可能无法提供出色的弹性行为(如果状态位于一个服务器实例上,则会话的所有请求必须由同一服务器提供)。请注意,HTTP会话和EJB会话Bean不是一回事,HttpSessions的重量更轻。
使用自定义会话“数据库” - 也许字面上一个SQL数据库可能更轻松。对于较大规模的数据输入情况,用户可能需要10分钟才能完成许多页面,这可能是最佳选择 - 如果用户需要中断并稍后恢复,则会保存用户的工作。这是更多的开发工作,你也需要看看家务,但它有时是最好的选择。
总结:非常清楚为什么你拒绝“明显的”HTTP会话技术,就简单性而言,这就是我开始的地方。