Avatar billede mik28 Seniormester
02. september 2003 - 11:38 Der er 15 kommentarer og
2 løsninger

Set og Get

Hej eksperter,

Jeg er ærlig talt ikke sikker på at jeg gør det her rigtigt, så jeg håber der er en som kan hjælpe. Det jeg gerne vil er at sætte en række variable en gang for alle indenfor en session, for at undgå for mange databasekald. Jeg gør følgende hvis brugeren bliver accepteret


HttpSession session = request.getSession(true);
                session.setMaxInactiveInterval(600); 
               
                String SessionIndhold = navn;
                session.setAttribute("brugernavn", SessionIndhold);
               
           
                String remoteadr = request.getRemoteAddr();
            //    String remote    = request.getRemoteHost();
           
           
                Dato da      = new Dato();
                String dato = da.nyDato();
           
                Variabler va = new Variabler();
                   
                va.setNavn(navn);
                va.setPassword(pass);
               
                   
                session.setAttribute("navn",va);
                session.setAttribute("password",va);

Det jeg prøver at gøre er at binde variablene til sessionen. Mit spørgsmål er for det første om det er den rigtige måde jeg gør det på, og hvordan jeg henter værdierne igen.
Avatar billede arne_v Ekspert
02. september 2003 - 11:59 #1
Det kan man godt gøre.

session.getAttribute("xxxx") henter igen !
Avatar billede mik28 Seniormester
02. september 2003 - 12:28 #2
Jeg får ikke det forventede

Jeg skriver

buffer.append(session.getAttribute("navn"));

og får

Variabler@e90943
Avatar billede mik28 Seniormester
02. september 2003 - 12:33 #3
Behøver jeg overhovedet når jeg binder variablene til sessionen ?   

Variabler va = new Variabler();
                   
va.setNavn(navn);
va.setPassword(pass);
Avatar billede mik28 Seniormester
02. september 2003 - 12:46 #4
Hvad dælen gør jeg forkert :-()Hvorfor får jeg ikke den værdi tilbage som jeg har sat den til??
Avatar billede zeed Nybegynder
02. september 2003 - 12:47 #5
Hejsa

Hvis du vil have noget liggende på sessionen er det rigtigt med setAttribute men i dit eks. et det samme objekt du sætter to gange bare med forskellige nøgler.

Når du henter objekter ud at sessionen skal du bare 'carste' til den rigtige type.

F.eks.
(Variabler) session.getAttribute("navn")

håber dette hjælper

zeed
Avatar billede mik28 Seniormester
02. september 2003 - 13:11 #6
Der er vel ikke nogen grund til at sætte det samme objekt flere gange. Skal jeg så ikke bare kunne skrive

session.setAttribute("navn");
Avatar billede mik28 Seniormester
02. september 2003 - 13:13 #7
Klassen Variable er bare en række set og get metoder jeg selv har lavet
Avatar billede arne_v Ekspert
02. september 2003 - 13:18 #8
Variabler@e90943

er vel korrekt hvis ikke du har implementeret en toString metode
i din klasse !
Avatar billede arne_v Ekspert
02. september 2003 - 13:19 #9
setAttribute har 2 argumenter

getAttribute har et argument
Avatar billede arne_v Ekspert
02. september 2003 - 13:21 #10
Du vil nok enten:

session.setAttribute("alt", va);

eller:

session.setAttribute("navn", va.getNavn());
session.setAttribute("password", va.getPassword());
Avatar billede arne_v Ekspert
02. september 2003 - 13:22 #11
Og hente igen med:

Variabler va = (Variabler)session.getAttribute("alt");
String navn = va.getNavn();
String password = va.getPassword();

eller:

String navn = (String)session.getAttribute("navn");
String password = (String)session.getAttribute("password");
Avatar billede mik28 Seniormester
02. september 2003 - 13:25 #12
java.lang.ClassCastException: Variabler
Avatar billede arne_v Ekspert
02. september 2003 - 13:29 #13
Det lyder som du forsøget at hente noget andet end du har gemt.
Avatar billede mik28 Seniormester
02. september 2003 - 13:41 #14
Okay, så fatter jeg det.

session.setAttribute("navn", navn);

tak for hjælpen begge to.
Avatar billede mik28 Seniormester
02. september 2003 - 13:54 #15
Det jeg nu mangler at forstå er så hvordan jeg identificerer en specifik session. Alt det jeg har lavet indtil videre foregår indenfor den samme klasse. Hvad nu hvis jeg vil tilgå de variable som er knyttet til min session fra en anden klasse?
Avatar billede arne_v Ekspert
02. september 2003 - 14:01 #16
Selve servletten har adgang til sessionen via request.getSession().

Hvis du skal bruge sessionen i en anden klasse, så vil man nok typisk
sende den med over som argument til en metode i den pågældende klasse.
Avatar billede mik28 Seniormester
02. september 2003 - 14:03 #17
okay :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester