Spring 如何为不同的jsp页面构造模型、bean、控制器和视图,但这些页面位于数据库中的一个表中?

Spring 如何为不同的jsp页面构造模型、bean、控制器和视图,但这些页面位于数据库中的一个表中?,spring,design-patterns,spring-mvc,architecture,spring-webflow,Spring,Design Patterns,Spring Mvc,Architecture,Spring Webflow,这是一个我们正在使用SpringMVC2.5、jsp、Java7、Ajax和HTML5进行的新项目。就我而言,我将有7-10个jsp页面,每个页面包含一个表单。这些页面是连续的。i、 一个人必须成功地通过第一页才能进入第二页,通过第二页才能进入第三页,依此类推 为了保存数据,必须在成功通过其余页面后到达最后一页,并确认信息正确无误。一旦用户确认,我就必须将存储在bean或会话中的所有数据全部或无地持久化。不应保留任何不完整的数据。让我们调用数据库表employee 我是SpringMVC新手,但

这是一个我们正在使用SpringMVC2.5、jsp、Java7、Ajax和HTML5进行的新项目。就我而言,我将有7-10个jsp页面,每个页面包含一个表单。这些页面是连续的。i、 一个人必须成功地通过第一页才能进入第二页,通过第二页才能进入第三页,依此类推

为了保存数据,必须在成功通过其余页面后到达最后一页,并确认信息正确无误。一旦用户确认,我就必须将存储在bean或会话中的所有数据全部或无地持久化。不应保留任何不完整的数据。让我们调用数据库表employee

我是SpringMVC新手,但我有了这个想法,并使用一个控制器实现了页面流

我的问题是,我应该需要一个模型类或bean来存储所有数据,还是使用session来存储每个页面的信息并将其保存在会话中,直到它被持久化


或者最好有一个模型类,但有多个控制器/bean来控制来自每个页面的数据流。你推荐哪一个?是否已经实现了任何设计模式来回答我的问题?如果您有更好的想法,请随时讨论您的想法。

您使用HTTP会话存储表单状态是正确的

或者使用会话存储每个页面的信息并将其保存在 会话,直到它被持久化

由于这一要求:

不应保留任何不完整的数据

至于

我是否需要一个模型类或bean来存储所有数据

您可以根据需要对此进行建模。可能是一个表示流的模型,然后是每个页面的一个对象。取决于数据如何跨页面分割


尽管如上面的评论所述,您可能可以利用WebFlow来实现这一点。然而,这最终只是SpringMVC上的一个轻量级框架。

您使用HTTP会话存储表单状态的说法是正确的

或者使用会话存储每个页面的信息并将其保存在 会话,直到它被持久化

由于这一要求:

不应保留任何不完整的数据

至于

我是否需要一个模型类或bean来存储所有数据

您可以根据需要对此进行建模。可能是一个表示流的模型,然后是每个页面的一个对象。取决于数据如何跨页面分割


尽管如上面的评论所述,您可能可以利用WebFlow来实现这一点。然而,这最终只是SpringMVC上的一个轻量级框架。

正如您已经提到的,有两种方法。使用哪一个取决于数据大小和其他要求,例如,用户是否可以稍后返回并从离开的地方继续。模型和控制器不必只是一个。它可以被适当地设计

a存储会话中每个屏幕的数据:

优点:不必要的数据不会持久化到数据库。当用户在屏幕上来回移动时,可以从会话中操纵数据,因此速度更快

这种方法的缺点:会话中的信息太多会导致内存问题。会话故障切换期间可能没有太大帮助。如果需要此功能,用户无法重新登录并从用户离开的位置继续

b在用户移动时保留每个屏幕数据:

优点:会话较轻,因此会话中只存储最小的相关信息。用户可以重新登录并从用户离开的位置继续。 单独的inprogress db表可用于存储此信息,并且只能在最终提交时将数据插入/更新到实际表中,否则db将包含大量未提交的数据。这样可以定期清理inprogress db。 缺点:需要对每个屏幕进行db调用以保持和检索,即使用户可能没有提交。
正如你已经提到的,有两种方法。使用哪一个取决于数据大小和其他要求,例如,用户是否可以稍后返回并从离开的地方继续。模型和控制器不必只是一个。它可以被适当地设计

a存储会话中每个屏幕的数据:

优点:不必要的数据不会持久化到数据库。当用户在屏幕上来回移动时,可以从会话中操纵数据,因此速度更快

这种方法的缺点:会话中的信息太多会导致内存问题。会话故障切换期间可能没有太大帮助。如果需要此功能,用户无法重新登录并从用户离开的位置继续

b在用户移动时保留每个屏幕数据:

优点:会话较轻,因此se中只存储最低限度的相关信息 是的。用户可以重新登录并从用户离开的位置继续。 单独的inprogress db表可用于存储此信息,并且只能在最终提交时将数据插入/更新到实际表中,否则db将包含大量未提交的数据。这样可以定期清理inprogress db。 缺点:需要对每个屏幕进行db调用以保持和检索,即使用户可能没有提交。
这听起来更适合Spring Webflow,实际上它有一个名为flowScope的内置作用域,您可以在其中存储在整个序列中应该存在并在最后持久化的内容。这听起来更适合Spring Webflow,实际上,它有一个名为flowScope的内置作用域,您可以在其中存储在整个序列中应该存在并在最后持久化的内容。