Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa sesijama - preklapanje

[es] :: Java :: Problem sa sesijama - preklapanje

[ Pregleda: 2381 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
*.static.zrlocal.net.



+5 Profil

icon Problem sa sesijama - preklapanje24.06.2010. u 23:12 - pre 167 meseci
Napravio sam jedan projekat koji radi super ali za jednog korisnika :)

E sada problem nastaje kada se uloguju 2 ili vise korisnika na sistem. Odnosno kada se korisnik uloguje stavljam u sesiju objekat tog korisnika(jmbg,ime,prezime....). Medjutim kada se uloguje drugi korisnik ja onda preko tog objekta u sesiji upisujem drugi tako da mi se informacije o prvom gube...

Kako se ovo uopste resava?

Pretpostavljam da su za to zaduzeni cookies ali meni nesto ne radi kako treba. Mozda ne pozivam servlete kako treba.

[Ovu poruku je menjao RMAN dana 25.06.2010. u 00:29 GMT+1]
Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

del-boy
Bojan Delić
Beograd

Član broj: 9330
Poruke: 1089

Sajt: www.delic.in.rs


+21 Profil

icon Re: Problem sa sesijama - preklapanje25.06.2010. u 00:07 - pre 167 meseci
Ako si ga stavio na sesiju treba da bude vezan samo za jednog korisnika (tomcat - pretpostavljam da njega koristiš ili neki sličan server - sam vodi računa o postavljanju cookie-a). Moguće je da si stavio taj objekat u application scope, a ne u session scope, pa da je vezan za celu aplikaciju, a ne za korisnika...

Postavi deo koda gde postavljaš taj objekat.
 
Odgovor na temu

MMX
Miloš Malović
Platform engineer, Supplyframe
Beograd

SuperModerator
Član broj: 2423
Poruke: 2105
188.120.96.*

Jabber: mmx@elitesecurity.org
ICQ: 98797759
Sajt: www.mmx.rs


+11 Profil

icon Re: Problem sa sesijama - preklapanje25.06.2010. u 08:41 - pre 167 meseci
Kao što kolega reče, najbolje da postaviš kod pa da vidimo u čemu je problem i da proverimo da li si sve uradio kako treba. Pretpostavljam da testiranje vršiš tako što otvoriš novi tab u Firefoxu pa u njemu loguješ drugog korisnika? Problem je u tome što tabovi u Firefoxu dele istu sesiju, dok u Internet Exploreru to nije slučaj. Najbolje bi bilo da testiranje vršiš sa dva browsera.
↑ ↑ ↓ ↓ ← → ← → B A B A [select] [start]
 
Odgovor na temu

RMAN
Milan Đukić
student
Knićanin

Član broj: 32492
Poruke: 1166
213.244.209.*



+5 Profil

icon Re: Problem sa sesijama - preklapanje29.06.2010. u 09:38 - pre 167 meseci
Pozdrav!

Izvinjavam se sto nisam ranije odgovorio imao sam problema sa netom.

E, probao sam u dva browsera i radi .
@del-boy Nisam stavio u application scope vec u session
@MMX bio su u pravu, radio sam sa tabovima u firefox-u i tako ne radi, medjutim probao sam i sa tabovima u exploreru i ni tamo ne radi. Ali kada sam probao odvojeno u firefox-u i explorer-u radi super.

Zanima me da li je to u redu ili nije?

Ima dosta koda, pa cu pokusati najbitnije da izdvojim...

Prvo imam pocetno stranicu koja prikazuje spisak svih oglasa u bazi podataka, za prikaz ove stranice mi je zaduzen "WelcomeServlet"
Code:

// inicijalizovanje ulazno-izlaznih tokova za komunikaciju sa serverom (java aplikacija sa kojom se komunicira preko porta 9000)
Socket sock=new.....
ObjectOutputStream out=new.....
ObjectInputStream in=new.....

// neki deo koda ovde
// slanje zahteva serveru da posalje listu oglasa iz baze podataka
// primanje liste oglasa

// stavljanje u sesiju
request.getSession().setAttribute("adsList", adsList);
request.getSession().setAttribute("connectOk", connectOk);     // connectOK je boolean indikator da li je konekcija sa serverom ostvarena
request.getSession().setAttribute("input", input);
request.getSession().setAttribute("output", output);

// redirekcija
response.sendRedirect(response.encodeURL("basic.jsp"));




Sada sam redirektovan na stranicu basic.jsp iz koje citam connectOk i adsList iz sesije iz kreiram html stranicu.
Na njoj se nalaze linkovi za registraciju korisnika i logovanje korisnika (RegisterServlet i CheckLoginServlet respektivno).

Ako neko zeli da se registruje pokrece se RegisterServlet
Code:

// preuzimanje parametara za registraciju sa forme

// neki deo koda ovde

// preuzimanje ulazno-izlaznih tokova iz sesije (prethodno inicijalizovanih u WelcomeServlet-u)
ObjectOutputStream output=(ObjectOutputStream)request.getSession().getAttribute("output");
ObjectInputStream input=(ObjectInputStream)request.getSession().getAttribute("input");

// slanje zahteva serveru da proveri validnost podataka

// ukoliko su podaci validni vrsi se redirekcija
response.sendRedirect(response.encodeURL("registerSuccess.html"));

// ukoliko nisu validni...... neki deo koda ovde



Stranica registerSuccess.html obavestava korisnika da se uspesno registrovao i da sada ide na login stranicu
Znaci imam link na pocetno stranicu i na stranicu za logovanje (kada se klikne na pocetnu stranicu ide se na WelcomeServlet a kada se klikne na stranicu za logovanje ide se na login.jsp)

Ukoliko se ide na stranicu za logovanje "login.jsp" (CheckLoginServlet)
Code:

// preuzimanje ulazno-izlaznih tokova iz sesije
ObjectOutputStream output=(ObjectOutputStream)request.getSession().getAttribute("output");
ObjectInputStream input=(ObjectInputStream)request.getSession().getAttribute("input");

// slanje zahteva serveru da proveri validnost username-a i password-a

// citanje odgovora servera

// ako su podaci validni redirekcija na user.jsp

// ako podaci nisu validni redirekcija ponovo na login.jsp


LogoutServlet - servlet za izlogovanje
Code:

// brisem sve iz sesije i zatvaram ulazno-izlazne tokove sa serverom....



Da li je ovo ok?
I da, jos jedno pitanje da li mogu iz jednog servleta da se redirektujem na drugi servlet? Odnosno, znam da moze al da li je to ok?



Eureka!

MILAN DJUKIC
D J U K A
 
Odgovor na temu

IgorMedo
Igor Madjeric
Doboj

Član broj: 101335
Poruke: 30
89.204.137.*



Profil

icon Re: Problem sa sesijama - preklapanje11.08.2010. u 19:06 - pre 165 meseci

I da, jos jedno pitanje da li mogu iz jednog servleta da se redirektujem na drugi servlet? Odnosno, znam da moze al da li je to ok?

Kao sto si i sam primjeti Servlet je standardna Java klasa koja implementira odredjeni interface ili prosiruje neku abstractnu class, sadrzi methode u kojim bi treba od obradis zahtijev.
Vjerovatno prosirujes HttpServlet... ili nesto slicno.
Posto je to standardna klasa vrlo lako mozes kreirati novu klasu tj. servlet i pozvati methodu koju zelis.
Medjutim to i bas nema mnog smisla, jedan servlet treba da obraduje jednu akciju. Skup vise servleta treba da prestavlja kontroler.
Sam kontroler po prirodi ne bi treba da sadrzi poslovnu logiku, logika treba da bude odvojena u servisma, a kontroler treba da ti omoguci povezivanje pogleda (tj. forme) sa servisima.
Na ovaj nacin ces rastaviti Korisnicki interfejs od poslovne logike, samim tim odrzavanje aplikacije ti postaje jednostavnije, ukoliko moras da vrsis izmjene na pogledima ne rizikujes da ces razbiti poslovnu logiku i obratno.

Sve u svemu ja nebih pozivao iz jednog servleta drugi.

Ako ti je potrebna neka obrada prije poziva odradjenih servleta pogledaj filtere vrlo su jednostavni za koristenje i korisni. Npr. ako imas odredjeni dio koda koji ti se mora izvrsiti prije izvrsenje odradjenih servleta.

Pozdrav
 
Odgovor na temu

[es] :: Java :: Problem sa sesijama - preklapanje

[ Pregleda: 2381 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.