Как вы храните информацию в памяти сеанса в весенний mvc для получения позже?

У меня есть уникальная ситуация, в которой я хочу сохранить массив целых чисел в памяти через POST. Я думаю, что хочу получить эти данные позже с запросом GET.

Это может показаться странным и странным, но у меня есть вариант использования, и он останется в памяти только на несколько секунд.

Простой пример - сохранить массив someArray = [1, 2, 3]; в какой-то памяти в памяти с POST, и получить его через GET в другой функции.

2 ответа

Решение

Так как у вас будет доступ к HttpServletRequest в вашем контроллере, вы просто должны вызвать getSession метод:

HttpSession session = request.getSession(false);

Теперь у вас есть доступ к сеансу, поэтому вы можете сохранять, извлекать и удалять данные из него, используя соответствующие методы:

  • HttpSession#setAttribute
  • HttpSession#getAttribute
  • HttpSession#removeAttribute

Как сказано в комментариях, вы также можете не получать сеанс вручную и отправлять его в качестве параметра в ваш метод из вашего @Controller, Взято из этого ответа

@RequestMapping...)
public String processSubmit(..., HttpSession session, ...) {
    Object anAttribute = session.getAttribute("anAttribute");
}

У меня когда-либо было такое требование, которое сначала отправляло основные данные в контроллер, а затем отправляло некоторые подробные данные в контроллер и объединяло 2 вида данных и извлекало данные из базы данных с этими данными. Я просто храню основные данные в сессии с session.setAttribute()Весенний MVC имеет @SessionAttribute, но после десятков попыток, я сдался, его очень сложно использовать.

Другие вопросы по тегам