У меня есть набор требований, которые включают создание веб-приложения Java, которое состоит из нескольких этапов, которые должны быть без сохранения состояния.
Отсутствие состояния в этом контексте означает, что будет набор 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>
Следующий контроллер принимает значение ввода "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>
Следующий контроллер принимает значение ввода "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>
Шаблон продолжается до тех пор, пока не будет собрана вся необходимая информация.
Каковы преимущества и недостатки этого подхода?Какие есть альтернативы?