Obiekt żądania i sesji

0

Witam!
Kiedy powinno się używać obiektów sesji a kiedy obiektów żądania? Oczywistym jest że jeśli korzystamy z tego samego obiektu przez całą sesje to trzeba używać obiektu sesji, ale jak mamy np. obiekt który wykorzystujemy w kilku kolejnych stronach np 4 to lepiej jest umieścić ten obiekt w sesji czy żądaniu i przekazywać do każdej strony. Tylko pytanie czy da sie przekazywać tak obiekt? No a jeśli umieścić obiekt w sesji, to co zrobić jak ktoś będzie chciał otworzyć dwa razy ta samą stronę i jednocześnie wykonywać tą samą akcje ( np. jakieś dodawanie zadania które jest na 4 stronach)??

PS. pisze w jsp/jsf, ale to i tak nie ma znaczenia, w większości technologii jest obiekt sesji czy żądania

0

Nie wiem czy dobrze cię rozumiem, ale jeżeli chodzi ci o przekazywanie czegokolwiek pomiędzy stronami to ja proponuję przechowywać to w sesji, chyba że zależy ci na tym żeby user mógł powrócić do stanu powiedzmy po restarcie komputera ( a dokładniej mówiąc w trybie nowej sesji ). Wtedy najłatwiej wykorzystać do tego parametry zapytania GET. Możesz ewentualnie pobawić się jeszcze z ciasteczkami.

0

Właśnie teraz tak piszę:) tylko doszedłem do wniosku że jest problem a mianowicie:
jak jednocześnie dwa razy otworzysz tą samą stronę w dwóch oknach np dodawania jakiegoś zadania, to wtedy będziesz operował jednocześnie na tym samym obiekcie czyli jak masz dodawanie do listy jakichś elementów w pierwszym oknie to w drugim oknie już te obiekty będą, czyli nie możliwe jest jednoczesne dodawanie, a jeśli był by to obiekt żądania to w każde okno miało by oddzielnie ten obiekt. I się zastanawiam jak powinno się takie elementy pisać?

A co do Get'a to akurat w tym przypadku nie jest potrzebny pasek, wszystko śle domyślnie postem...

0
michall napisał(a)

Właśnie teraz tak piszę:) tylko doszedłem do wniosku że jest problem a mianowicie:
jak jednocześnie dwa razy otworzysz tą samą stronę w dwóch oknach np dodawania jakiegoś zadania, to wtedy będziesz operował jednocześnie na tym samym obiekcie czyli jak masz dodawanie do listy jakichś elementów w pierwszym oknie to w drugim oknie już te obiekty będą,

Jeżeli mówisz o obiektach to one nie znajdują się w oknach tylko w pamięci serwera, a więc możesz mieć i 100 okien, a
o tym ile obiektów przechowujesz decydujesz ty, a nie ilość otwartych okien.

michall napisał(a)

czyli nie możliwe jest jednoczesne dodawanie

Co to znaczy, gdzie i co chcesz jednocześnie dodawać?

michall napisał(a)

, a jeśli był by to obiekt żądania to w każde okno miało by oddzielnie ten obiekt. I się zastanawiam jak powinno się takie elementy pisać?

A co do Get'a to akurat w tym przypadku nie jest potrzebny pasek, wszystko śle domyślnie postem...

Zastanawiam się cały czas co ty masz na myśli z tymi obiektami żądania, chodzi ci o scope'y? Korzystasz z jakiegoś frameworka?

0

Oczywiście że chodzi o scope'y, noi obiektach w tych scope'ach.
masz obiekt który znajduje się w zasięgu sesji, noi oczywiście możesz tych obiektów dodać ile chcesz... ale chodzi o synchronizacje tego obiektu w jednej sesji pomiędzy oknami... postaram się wyjaśnić jak najdokładniej:

1)masz stronę na której wyświetlane są notatki dodawane przez użytkownika
2)notatki dodawane są do obiektu znajdującego się w zasięgu sesji (scope session:) )
3)logujesz sie na stronie, tworzony jest obiekt sesji z podpunktu 2
4)otwierasz dwa okna z tą stroną dodawania notatki
5)dodajesz notatke w jednym oknie
6)przechodzisz do drugiego okna, a tam mimo że nie dodałeś nic to i tak znajduje się już obiekt dodany z pierwszego okna...

przykład prymitywny, ale jeśli np dodajesz notatkę podając kolejne wymagane informacje przez 4 kolejne strony i np
w czasie dodawania informacji na stronie numer 2, w innym oknie otwierasz stronę pierwszą to można dużo na mieszać... inaczej jest z obiektem żądania....

ps. tak jak pisałem pisze w jsp/jsf a technologia chyba nie ma znaczenia, takie obiekty o określonym zasięgu (scope) są w asp, php....w wszystkich innych a przynajmniej żądania i sesji

pozdrawiam

0
michall napisał(a)

Oczywiście że chodzi o scope'y, noi obiektach w tych scope'ach.
masz obiekt który znajduje się w zasięgu sesji, noi oczywiście możesz tych obiektów dodać ile chcesz... ale chodzi o synchronizacje tego obiektu w jednej sesji pomiędzy oknami... postaram się wyjaśnić jak najdokładniej:

1)masz stronę na której wyświetlane są notatki dodawane przez użytkownika
2)notatki dodawane są do obiektu znajdującego się w zasięgu sesji (scope session:) )
3)logujesz sie na stronie, tworzony jest obiekt sesji z podpunktu 2
4)otwierasz dwa okna z tą stroną dodawania notatki
5)dodajesz notatke w jednym oknie
6)przechodzisz do drugiego okna, a tam mimo że nie dodałeś nic to i tak znajduje się już obiekt dodany z pierwszego okna...

ps. tak jak pisałem pisze w jsp/jsf a technologia chyba nie ma znaczenia, takie obiekty o określonym zasięgu (scope) są w asp, php....w wszystkich innych a przynajmniej żądania i sesji

taaaa

michall napisał(a)

przykład prymitywny, ale jeśli np dodajesz notatkę podając kolejne wymagane informacje przez 4 kolejne strony i np
w czasie dodawania informacji na stronie numer 2, w innym oknie otwierasz stronę pierwszą to można dużo na mieszać... inaczej jest z obiektem żądania....

Namieszać ? Raczej nie. Po pierwsze z tego co mówisz wszystko siedzi w sesji (wynika z tego że to mało istotne dane) więc z tym namieszanim to bym nie przesadzał. Po drugie nawet jeżeli taki user który nie pamięta że przed chwilą (sesja nie trwa na ogół wieki) dodał (wypełnił i zatwierdził formularz) notatkę a w drugim oknie ma dopiero formularz to najwyżej doda kolejną notatkę i wtedy albo będzie musiał skasować jedną albo aplikacja powinna na podstawie jakichś unikalnych danych (np token) powiedzieć mu że operacja dodania jest już zakończona. Ot i całe rozwiązanie. Oczywiście można bawić się w synchronizację ekranu użytkownika w przeglądarce przez swego rodzaju pooling, ale to się mija z celem moim zdaniem.

0

Zakladam ze korzystasz z Firefoxa? On ma jedno ciasteczko dla sesji takie samo dla kazdego okna. Jesli uzywasz np IE to kazde okno ma osobne "repozytorium ciasteczek" i tam nie nastapi efekt ktory opisujesz.

0

Dzięki za pomoc!

Ale namieszać to można, to zależy od sytuacji i programowanej funkcjonalności, dlatego też ciekawi mnie czy jest możliwe wykorzystać w takiej sytuacji (kilka stron) obiekt o zasięgu żądania i przekazać go w jakiś sposób kolejnym stronom?? To chyba jest ściśle uzależnione od użytej technologii, czyli w moim przypadku to jsp/jsf...

0
michall napisał(a)

Dzięki za pomoc!

Ale namieszać to można, to zależy od sytuacji i programowanej funkcjonalności, dlatego też ciekawi mnie czy jest możliwe wykorzystać w takiej sytuacji (kilka stron) obiekt o zasięgu żądania i przekazać go w jakiś sposób kolejnym stronom??

Tak można go przechować w obiekcie sessji :)
A tak serio to tak jak napisałem wcześniej moim zdaniem najlepiej wysłać jakiś token który traci ważność po obsłudze pierwszego z formularzy. W momencie w którym użytkownik wyśle drugi formularz token będzie już nieważny i użytkownik dostanie info że nie można zrealizować zapytania i jako bonus odświeżony stan np notatek o których wspominałeś.

michall napisał(a)

To chyba jest ściśle uzależnione od użytej technologii, czyli w moim przypadku to jsp/jsf...

1 użytkowników online, w tym zalogowanych: 0, gości: 1