Http-запрос не имеет статуса. Каждый http-запрос отделяется. Внутренний сервер не может различать разных пользователей по запросу http. Так
внутренний сервер отправляет cookie с именем JSESSIONID в браузер, его можно использовать для пометки пользователя, когда браузер отправляет запрос на сервер с этим cookie.
Сессия имеет ограниченную жизнь. В Tomcat по умолчанию время ожидания сеанса составляет 30 минут. Вы можете найти эту конфигурацию в $CATALINA_BASE/conf/web.xml
.
<!-- ==================== Default Session Configuration ================= -->
<!-- You can set the default session timeout (in minutes) for all newly -->
<!-- created sessions by modifying the value below. -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Если пользователь получил доступ к вашему веб-серверу в 09:00, а до 09:31 запросов больше не было, сеанс этого пользователя будет уничтожен. Но в вашем случае вы можете просто установить время ожидания сеанса больше, чем время экзамена. Я думаю, что это маленькая хитрость.
Еще один вопрос, сессия связана с браузером. Если ученик закроет и снова откроет браузер или откроет другой браузер, его вопросы будут восстановлены, и то, что он уже сделал в исходном окне браузера, исчезнет навсегда. Я не знаю, что система erp могла бы принять это.
И сеанс поддерживает только один внутренний сервер. Если вы развернете несколько серверов для системы erp и будете использовать nginx для пересылки запросов и балансировки нагрузки, это приведет к проблемам.
Если вы развертываете только один экземпляр для системы erp, вы можете просто сохранить карту в памяти, ключ - это идентификатор студента, а значение - идентификатор вопроса.
Если система erp является распределенной системой, вы должны хранить данные в Redis, используя хеш.
Кстати, вы можете просто вернуть все вопросы во внешний интерфейс и использовать js для их обработки.