向客户端发送状态字符串表示形式是创建无状态Web应用程序的好方法吗?

时间:2018-12-13 14:28:15

标签: java jsp web-applications stateless

我有一系列要求,包括创建一个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>

我们提供三项服务。

  • NameService返回<info>块中的信息
  • AddressService返回<address>块中的信息
  • InterestService返回<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>

模式会一直持续到收集到所有必需的信息为止。

此方法的优点和缺点是什么?有哪些替代方案?

0 个答案:

没有答案