Как вы храните информацию в памяти сеанса в весенний 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
, но после десятков попыток, я сдался, его очень сложно использовать.