![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Может мне и не нужен собственно ответ, скорее надо понимание...
Суть такова: Если юзер логинится и начинает работу с системой(например создаёт какой-нить заказ) - он может пройти по десятку и более страничек за это время... И занести в итоге результат своих ухищрений в БД. У нас есть сервлеты как классы, есть экземпляры этих сервлетов(которые ложатся под любой поток как вокзальная .... Теперь ситуация: Создаём, значит, заказ. надо забит ьдля него кучу данных на страничке, подтверждаем что вроде бы правильно всё, потом начинаем создавать линии этого заказа(товар - кол-во. ну и проч атрибуты), потом переходим на создание связей с клиентами и перевозчиками - указываем кто и как учавствует в обработке заказа, ну и напоследок много ещё дополнительной инфы. Потом Юзер вздыхает облегчённо, пробегает по страничкам, просматривает чё он навводил, улыбается и говорит: "поехали". После этого знаменитого слова он вонзает курсор в кнопочку и заказ заносится в таблицы БД с помощью нужных процедур. Теперь вопрос: Как хранить объект типа Order с набором объектов типа Line в нём и набором объектов Customer и объектов Performer таким образом, чтоб никто другой не залез в него, не занося в БД и не пытаясь втиснуть это всё в сессионные параметры. Бины, насколько я понимаю, так же не гарантируют супружеской верности потоку. Пример наобум привёл, интересно знать как это ДОЛЖНО БЫТЬ или РЕКОМЕНДУЕТСЯ ДЕЛАТЬ. Неужели хранение всего в БД, а мелочей - в "кармашках" параметров сессии - это единственная панацея??? -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
У тебя есть :
1. Сесия 2. Скрытые поля 3. Куки Насколько я знаю нонышним Веб-девелоперам этого хватает |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
МАЛОВАТО БУДЕТ!!! В конце концов - это стринги, а в моём примере линии и участники обработки заказа желательно организовывать в массивы(эррейлисты и т.д.). Не зря ведь их придумали. А если всю такую информацию запихнуть в сессию - придётся дописывать кусок кода, который будет туда это всё пихать и собирать обратно. Парсер тысызыть своей сессии. Генерить имена параметров типа "ord1line2product1", "ord1line2quantity1". Кажется это уже слишком. Полный абзац. Не может быть чтоб ничего такого не существовало... Необязательно то о чём мечтается, может есть другое КРАСИВОЕ решение Это сообщение отредактировал(а) chief39 - 4.11.2005, 12:47 -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Я не понял. Зачем? Достаточно будет поместить в сессию один объект User с массивом заказов или чего там нужно. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Стоп, стоп, стоп... В сессию можно пихать ЛЮБОЙ Object??? Если ДА - то прошу прощения за недочитанную доку И огромное спасибо. Сейчас поэкспериментирую -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| KostenkoSergey |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
посмотрел я что касается JavaBeans из JSP , вообщем делается это известно как :
ид определяет имя бина, уникальное в пределах области указанной в скопе. Сам компонент хранится как атрибут контекста обласи и может быть получен вызовом getAttribute() так вот теперь о scope : page - компонент как один из атрибутов PageContext request - компонент как один из атрибутов ServletRequest session- компонент как один из атрибутов HttpSession application-компонент как один из атрибутов ServletContext тобеж если я не пользуюсь правом на "потупить" объекты тоже можно проносить ... копать думаю надо тут Добавлено @ 13:15 так и есть тупил:
|
||||
|
|||||
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
а с чего ты взял что только строки ?
|
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
chief39, считай, что тебе повезло: твой вопрос решается проще пареной репы.
В атрибутах сессии можно хранить какие угодно объекты - это просто Map. Посмотри сигнатуры методов setAtribute() и getAttribute() в HttpSession. Поэтому делаешь все в точности так, как ты и написал. Да, и не забываем стереть все из сессии после того как обработка заказа успешно завершилась -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| chief39 |
|
||||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Спросил у больного здоровье Lamer George, огромный спасиб. Настроение на весь день поднялось прям. Попробую репутацией воспользоваться KostenkoSergey, а это интересная точка зрения Кстати,
и
сут не одно и тоже? Или есть нюансы? -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||||
|
|||||||
| KostenkoSergey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 31.10.2005 Где: Kiev Репутация: 3 Всего: 8 |
та то я просто в жбилдере смотрел - и строку те скопировал. одно и тоже.
|
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Ага... посмотрел на них... уже с другой стороны. Я ж говорю: KostenkoSergey интерсное дело говорит... С помощью бинов это тоже реализуется? при скопе размером в сессию. Хотя, почитаю пока сам. Но и от советов не откажусь -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Да. Разница, видимо, будет только в том, что к бинам ты сможешь достучаться через jsp'шные теги, а к обычным прикрепленным объектам - только через java-код. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
А бины "будут мне верны"? ;) То есть созданный бин будет только в моём потоке/сессии доступен. (Я верно понимаю?) И.... вопрос до кучи.. Какое соотношение поток/сессия? Если я коннекчусь к серверу - у меня один поток? Который других не обслуживает? Может ли у меня быть несколько потоков? То есть одна сессия - несколько потоков. Ибо в доке всё красиво... но прямых ответов на вопросы "А вот так будет работать?" - маловато -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| tux |
|
||||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Будет только в твоей сессии, все верно.
Вот этого спецификация J2EE не определяет. Вопрос, вообще говоря, отдается на откуп производителю. Возможно, что вообще все клиенты обрабатываются одним потоком. У веб-серверов такие прецеденты бывают. Довольно распространенная модификация СУБД Firebird - SuperServer - именно так и работает. Более того, реализация всего в одном потоке обеспечивает чуть более высокую производительность на однопроцессорных машинах. Хотя я сомневаюсь, что хотя бы один сервер приложений J2EE реализован таким образом. Причина проста - множество потоков означает возможность их параллельного выполнения на многопроцессорных системах, следовательно, значительное увеличение производительности. Разберемся с мыслью "одна сессия - несколько потоков". Если производитель реализует многопоточный сервер, каким образом он может обрабатывать поступающие запросы? Я вижу два варианта:
Во втором случае вполне возможна ситуация соотношения "одна сессия - несколько потоков" когда параллельно обрабатываются несколько запросов одного и того же клиента. Но! В любом случае одному клиенту соответствует одна сессия. Так что, как мне кажется, достаточно учитывать тот факт, что наше приложение многопоточное и применять необходимые способы обеспечения безопасности совместной работы, которые обсуждаются выше в топике "JSP отдельная страничка - отдельный объект?" (почитал, кстати, с немалым удовольствием |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |