Использование сеансов в Spring-MVC

Поскольку я новичок в Spring MVC, я застрял в этой проблеме. Я пытаюсь использовать область сеанса, где я хочу, чтобы список совместно использовался несколькими контроллерами в сеансе http. Но я не хочу, чтобы этот сеанс совместно использовался разными сеансами http. Каждый http-сеанс должен иметь свой собственный список (хранилище), который используется всеми его контроллерами.

Проблема, с которой я столкнулся, заключается в том, что этот список используется всеми параллельными запросами. Например, Если я нажму на контроллер на своей машине и придет другой запрос с другого компьютера, они оба используют один и тот же список (хранилище сеансов)

Это класс MySession, содержащий список, который должен использоваться несколькими контроллерами, и каждый контроллер может выполнять операции с этим списком.

@Component
@Scope("session")
public class MySession
{
   public List<String> mylist;
}

Вот мой контроллер, который использует объект класса MySession. Точно так же есть другие контроллеры, которые могут обновлять список в сеансе.

@Controller
@Scope("request")
public class SessionController
{
   @Autowired
   private MySession mySession;

   @RequestMapping("/updateSession")
   public ModelAndView  updateSession(@RequestParam("id") int id)
   {
      //Operation on List(add remove items)
   }  
}

Итак, теперь происходит то, что List в MySession выполняет некоторые другие мои запросы, поскольку я думаю, что все параллельные запросы используют один и тот же список.

Пожалуйста, помогите мне, как я могу решить эту проблему, если что-то мне не хватает Спросите о любых изменениях. Заранее спасибо.

Не могли бы вы предоставить дополнительную информацию о списке MySession? Я знаю, что вы, вероятно, этого не делаете, но, например, если бы это был статический список, у вас была бы эта проблема

Dovmo 10.05.2018 16:17

Нет, это не статично. На самом деле это простой объект класса, который содержит список массивов java. В основном некоторая информация, относящаяся к сеансу.

monkey 10.05.2018 16:19

Ага. Я говорю, что было бы полезно, если бы вы могли еще немного показать, как выглядит MySession.

Dovmo 10.05.2018 16:21

Я обновил mySession. Выглядит это примерно так.

monkey 10.05.2018 16:27

Почему ваш контроллер вообще ограничен областью действия? Это должен быть синглтон. И что вы делаете в методе updateSession?

M. Deinum 11.05.2018 09:14

Я прочитал здесь, в этой ссылке ниже, что контроллер должен иметь область действия запроса, иначе объект будет глобально разделен. blog.chesterwood.io/2011/03/…

monkey 11.05.2018 12:11

Но даже после выполнения этого сеанса объект становится доступным глобально.

monkey 11.05.2018 12:21
0
7
131
0

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