用于Wizard / Questionnaire类型的应用程序的通用J2EE体系结构

时间:2011-01-13 19:45:46

标签: java-ee jms

如果您正在设计一个应用程序,以便用户必须在页面上回答几个问题并且有几十个页面。您使用了哪些Java库和工具,是否有任何其他建议可以帮助您编写此类站点。

要求:

  • 用户必须能够随时退出申请并返回
  • 用户必须能够根据以前的问题从头到尾导航

可能的注释和潜在问题:    - 使用Struts2 +或其他一些j2ee框架    - 可能使用弹簧芯    - hibernate的用户    - Oracle后端

  • 您是否在每个页面上保存到数据库?

  • 可选(使用JMS)排队页面已完成。

2 个答案:

答案 0 :(得分:0)

由于需要,需要某种临时数据存储区(如临时表)来捕获用户活动状态 -

  

用户必须能够退出应用程序   在任何时候返回

您可以在WizardData中捕获相关值对象(例如,名为HTTPSession)中的所有用户操作(因为您使用的是Web层)。无需在每页上保存数据。而是在“下一个”或“上一个”的会话中更新WizardData。用户完成向导活动后,将信息保存到数据库表(j2ee / spring / hibernate)。

但是,如果用户未完成活动(注销或导航),您可以在会话中保留WizardData,直到用户注销或会话无效为止。在其中任何一种情况下,将WizardData保留在以userid为键的临时表中。因此,您可以在用户重新登录或登录后检索向导阶段并重新启动向导。

恕我直言,使用JMS将是一个过度杀戮来实现这样的功能。在添加额外的图层和复杂性时,您无法轻松获得任何实现。

答案 1 :(得分:0)

Spring Webflow擅长这种事情,我会在这种情况下使用它,因为我已经将它用于其他目的。如果您以前没有使用它,我可能会有点沉重,这是您唯一(立即)使用它。

webflow中的“表单”对象可以包含分割在多个页面中的多个表单中的数据,每个页面只填充整个对象的一部分。

要在每个页面/转换时必须保留表单对象,请退出并返回。我倾向于将其保存在与已完成表单相同的表中,但是有一个列为complete = false和最后一个活动时间戳。