我有一系列要求,包括创建一个Java Web应用程序,该应用程序必须具有多个必须“无状态”的步骤。
在这种情况下,无状态意味着将有一组REST API,它们将提供最终数据对象的一部分,这些部分将被转发到多步骤过程中的最后一步。最终的数据对象将是我们正在收集的数据的XML表示形式。例如,如果我们要创建以下数据对象(我在这里使用XML,则最好使用JSON)。
<person>
<info>
<id>123</id>
<firstName>Rocky</firstName>
<lastName>Robbin</lastName>
</info>
<address>
<street1>1 Treetop Lane</street1>
<city>Covington</city>
<state>LA</state>
<zip>70433</zip>
</address>
<interests>
<interest>Hopping</interest>
<interest>Bopping</interest>
<interest>Singing his song</interest>
</interests>
</person>
我们提供三项服务。
<info>
块中的信息<address>
块中的信息<interests>
块中的信息我们需要分三个步骤收集此信息,并显示每个步骤的结果(信息,地址和兴趣)。
我们可以做到的一种方法如下。
从初始页面调用NameService,并使用此信息填充该块。在控制器转发到的JSP中捕获此信息
<input type="hidden" name="person" value="[xml_string]" />
[xml_string]如下所示:
<person>
<info>
<id>123</id>
<firstName>Rocky</firstName>
<lastName>Robbin</lastName>
</info>
</person>
下一个控制器获取“人”输入的值(xml字符串),调用地址服务并更新xml字符串。该信息将作为
传递给下一个JSP。<input type="hidden" name="person" value="[xml_string]" />
[xml_string]如下所示:
<person>
<info>
<id>123</id>
<firstName>Rocky</firstName>
<lastName>Robbin</lastName>
</info>
<address>
<street1>1 Treetop Lane</street1>
<city>Covington</city>
<state>LA</state>
<zip>70433</zip>
</address>
</person>
下一个控制器获取“人”输入的值(xml字符串),调用intersts服务并更新xml字符串。该信息将作为
传递给下一个JSP。<input type="hidden" name="person" value="[xml_string]" />
[xml_string]如下所示:
<person>
<info>
<id>123</id>
<firstName>Rocky</firstName>
<lastName>Robbin</lastName>
</info>
<address>
<street1>1 Treetop Lane</street1>
<city>Covington</city>
<state>LA</state>
<zip>70433</zip>
</address>
<interests>
<interest>Hopping</interest>
<interest>Bopping</interest>
<interest>Singing his song</interest>
</interests>
</person>
模式会一直持续到收集到所有必需的信息为止。
此方法的优点和缺点是什么?有哪些替代方案?