webForumDet fria alternativet

Access till sessions-bean

7 svar · 348 visningar · startad av andreascarlsson

andreascarlssonMedlem sedan feb. 2003211 inlägg
#1

Jag har en javabean (med sessions-scope) som jag lagrar vissa värden i.

Nu är det så att jag i en annan javabean skulle behöva komma åt just denna instans av javabönan. Hur gör jag då??

Jag kan ju inte skriva:
Sessionsbean bean = new Sessionsbean()

eftersom det då kommer att skapas en ny instans av denna bean (class).

Anledningen till att jag måste komma åt sessionsinstansen av bönan är att jag har vissa värden lagrade i denna.

Hoppas att någon förstår vad jag menar och kan hjälpa mig?? :-)

För evigt tacksam!!

/Ante

andreascarlssonMedlem sedan feb. 2003211 inlägg
#2

Här kommer ett litet förtydligande:

Jag har användarnas inloggningsuppgifter sparade i en javaböna med sessions-scope.

I min andra javaböna skall jag connecta till en databas och exekvera en SQL-sats där användarens anv.namn ingår. Det är alltså därför som jag behöver komma åt bönan med sessionscope, från "databas-bönan". Jag vill nämligen använda de uppgifter som finns i inloggningsbönan i min SQL-sats i databas-bönan.

Jag kan förvisso skapa SQL-strängen på någon JSP-sida, (som har tillgång till sessionsbönan). Men detta känns inte som en snygg lösning.

Det borde väl rimligtvis gå att komma åt en böna med sessionsscope från en annan böna?? Man kan ju komma åt sessionsbönor från JSP-sidor!!

LimeMedlem sedan sep. 2001837 inlägg
#3

Ah... Det var skillnad. Jag trodde du hade en SessionBean men det är en böna med Session scope.

Du borde kunna instansiera DBBönan med AnvändarBönan.

/Lime

andreascarlssonMedlem sedan feb. 2003211 inlägg
#4

Jo! det borde ju funka!!! :-)

Fast jag löste det på ett annat sätt... Jag skapade en ny metod i min DB-böna:

db_böna.setUsername(användarböna.getUsername())

Får duga....

Vet du förresten hur man instansierar en böna (med sessions-scope) på en jsp-sida, utan att använda <jsp:useBean scope"session" class"blabla" name="blabla"> ???

Dvs. något i stil med
TestBöna böna = new TestBöna();
jspcontainer.setScope(böna, "session") // någonting åt det hållet??

Tack iallafall! :-)

/Ante

LimeMedlem sedan sep. 2001837 inlägg
#5

Nope. Taggen <jsp:useBean > säger en hel del till jsp-kompilatorn. Jag har gjort det någon gång genom att mer eller mindre kopiera den källkod som finns för <jsp:useBean> taggen och det är inte helt trivialt.

Annars kan man alltid göra så att man skapar interface i bönorna som skapar modeller av bönan. Det gör att man från andra bönor kan t.ex. få fram UserModel från valfri implementation av användarböna genom att anropa "getModel()". Man ska då få ut ett "objekt" som gör att man kan komma åt alla parametrar i anropad böna.

/Lime

andreascarlssonMedlem sedan feb. 2003211 inlägg
#6

Ok.... Ska klura lite på detta!! :-)

Tack för svaret!!!

sgtpepperMedlem sedan apr. 20005 524 inlägg
#7

[redigerat]

Läste lite fel, du vill alltså instansiera en böna och panga in den i session scope. Det är enkelt:

com.foobar.MyBean foobar = new com.foobar.MyBean();
foobar.doFoo("Bar");

request.getSession().setAttribute("foobar", foobar);

[/redigerat]

Om du har en böna med session-scope så ligger den i sessionen och du kan plocka ut den så här (bönans id=foobar):

Sida 1:

<jsp:useBean class="com.foobar.MyBean" id="foobar" scope="session"/>

.. bla bla...

Sida 2:
Plockar ut bönan som sida 1 lagt i sessionen:

com.foobar.MyBean foobar = (com.foobar.MyBean)request.getSession().getAttribute("foobar");
andreascarlssonMedlem sedan feb. 2003211 inlägg
#8

Perfekt!! Tackar!!!

Genererad på 378 ms · cache AV · v20260730165559-full.f96bc7eb