Я думаю, что у Вас должны на самом деле быть кнопка отправки или отправлять изображение... У Вас есть определенная причина использования, "отправляют отделение"? Если Вы просто хотите пользовательские стили, я рекомендую . http://webdesign.about.com/cs/forms/a/aaformsubmit_2.htm
Когда вы используете singleton
область видимости из контейнера Spring, вы указываете, что все потоки, которые извлекают компонент из контейнера, будут использовать один и тот же экземпляр. Таким образом, в этом случае, когда список состояний элемента является общим и может изменяться между потоками, вам придется синхронизировать доступ к списку, чтобы защитить ваше приложение от исключения ConcurrentModificationException
.
Однако обычной практикой Spring является создание приложения с объектами без состояния, у которых нет состояния, которое будет меняться в течение всего срока службы приложения.
В случае сеанса
области, вы можете с меньшей вероятностью столкнуться с проблемой параллелизма, поскольку компонент будет доступен только для текущего пользователя, вошедшего в систему. Однако это ' Возможно (по крайней мере, в сети) иметь несколько запросов, поступающих в одном сеансе, и в этом случае вам нужно будет принять те же меры предосторожности, как если бы bean-компонент был синглтон.
Опять же, лучший способ защитить себя - это попытаться сохранить бин как можно более без гражданства. Если у вас есть bean-компонент, которому требуется состояние, вам следует подумать об использовании области видимости prototype
, которая каждый раз извлекает новый экземпляр bean-компонента из контейнера.
Только пользователь этого сеанса может получить доступ к этому классу, но ArrayList не является потокобезопасным, как показано в этом обсуждении: http://forums.sun.com/thread. jspa? threadID = 5355402
Вам необходимо убедиться, что ваш класс полностью потокобезопасен, поскольку SessionScoped просто гарантирует, что он используется только каждым сеансом, поэтому один сеанс не может получить к нему доступ.
Вы можете захотеть посмотрите комментарии в этом обсуждении для получения дополнительной информации: http://wheelersoftware.com/articles/spring-session-scoped-beans.html
В основном для каждого пользователя, который инициирует сеанс, будет создана новая ShoppingCart
, область действия которой будет ограничена этим сеансом для этого пользователя.
Ваш класс является потокобезопасным. Инициализация
private List<Product> items = new ArrayList<Product>();
является поточно-ориентированной инициализацией, а
addItem (Product item)
является атомарной операцией и, следовательно, является поточно-ориентированной.