Avatar billede eskeman Nybegynder
23. marts 2001 - 11:22 Der er 12 kommentarer og
1 løsning

Variabel overførsel

Hejsa.

Jeg håber, at der er nogen som kan hjælpe med følgende:

Jeg har brug for at sætte en variabel, f.eks. userid, og kunne spørge på værdien af denne variabel fra en vilkårlig anden side.

Jeg har forsøgt med:

request.setAttribute(\"userid\", \"hans\");

og fra en anden side:

request.getAttribute(\"userid\");

Dette virker kun hvis man fra den første side forwarder direkte til side 2...Ellers indeholder variablen null.

Er der nogle gode bud på, hvordan jeg ellers kan gøre det?
Avatar billede kresten Nybegynder
23. marts 2001 - 11:27 #1

Så skal du vel bruge sessions?

Se på javax.serlvet.http.HttpSession pakken så skulle du nemt kunne bruge det.
Avatar billede disky Nybegynder
23. marts 2001 - 11:27 #2
hvad har du sat din \'session\' til ?
Avatar billede eskeman Nybegynder
23. marts 2001 - 11:31 #3
Jeg har også forsøgt at bruge sessions. Jeg har forsøgt følgende på første side:

HttpSession session = request.getSession();

session.setAttribute(\"userid\", \"hans\");

og følgende fra en anden side:

HttpSession session = request.getSession();

String userid= (String)session.getAttribute(\"userid\");

System.out.println(\"Userid indeholder:\"+userid);

men her skriver den ud, at Userid indeholder: null

Hvad gør jeg galt?
Avatar billede disky Nybegynder
23. marts 2001 - 11:45 #4
jeg har login check via en Java Bean som har Session scope og den husker så oplysningerne for mig.

Det virker fint.
Avatar billede eskeman Nybegynder
23. marts 2001 - 11:48 #5
Kan du ikke prøve at indsætte et kodeeksempel?
Avatar billede disky Nybegynder
23. marts 2001 - 11:58 #6
jeg includerer dette på alle mine websider hvor man skal være logget ind:

<jsp:useBean id=\"userLogin\" class=\"disky.user.UserLogin\" scope=\"page\"/>
<%
    userLogin.setPageContext(pageContext);

    if(userLogin.validateUser()==false)
    {
        response.sendRedirect(\"index.jsp\");  //open page after login
    }
%>

om scope skulle være lige med session ved jeg egentligt ikke men det virker :)


og funktionen i min bean er som følger:
    public boolean validateUser()
    {
        String userID;
       
        userID=(String)session.getAttribute(\"userID\");

        if( (userID!=null) && (userID.length()>0) )
        {
            return true;
        }
        return false;
    }

Den der sætter attribute er:

public boolean doLogin()
    {
        if( (db!=null) && name.trim().length()>0 && password.trim().length()>0)
        {
            String sql=\"select * from elever where name=\\\"\"+name+\"\\\" and password=\\\"\"+password+\"\\\"\";
                       
            ResultSet res=db.doQuery(sql);
           
            if(res!=null)
            {
                try
                {
                    int userID=0;
                   
                    if((userID=res.getInt(\"userID\"))!=0)
                    {     
                        session.setAttribute(\"userID\", \"\"+userID);

                        return true;
                    }
                }
                catch(SQLException e)
                {
                    e.printStackTrace(System.out);
                }
            }
        }
        return false;
    }
 


det er stadigvæk i udviklingsfasen, men det virker :)
Avatar billede eskeman Nybegynder
23. marts 2001 - 12:58 #7
Jeg er ved at afprøve det, du har sendt, men hvordan instantierer du din session variabel?

Skal man ikke bruge:
HttpSession session = request.getSession();

og importere:
import javax.servlet.http;
hvor HttpSession befinder sig

Dette virker ikke hos mig, fordi den ikke kan finde http-klassen!?!
Avatar billede disky Nybegynder
23. marts 2001 - 13:06 #8
har du installeret J2EE ??

Session variablen for du via PageContext
    public void setPageContext(PageContext pageContext)
    {
        this.pageContext=pageContext;
        request=(HttpServletRequest)pageContext.getRequest();
        response=(HttpServletResponse)pageContext.getResponse();
        session=pageContext.getSession();
    }
Avatar billede sporge_jorgen Nybegynder
23. marts 2001 - 13:56 #9
er du sikker på du befinder dig i den samme session. Ellers starter serveren en ny session og din variabel er væk
Avatar billede eskeman Nybegynder
23. marts 2001 - 14:02 #10
Tak for hjælpen til disky, men det var sporge_jorgens svar som gjorde, at det kom til at virke.

En stor tak til sporge_jorgen!!!
Avatar billede disky Nybegynder
23. marts 2001 - 14:16 #11
hmmmmmmm
Avatar billede eskeman Nybegynder
23. marts 2001 - 14:43 #12
Sorry disky, men jeg er nybegynder her på Eksperten, så jeg ville gerne have tildelt dig nogle point, men jeg ved ikke om man kan dele pointene.

Kan man det, så du kan få nogle point næste gang?
Avatar billede disky Nybegynder
23. marts 2001 - 14:44 #13
yep du kan godt dele point imellem flere personer hvis du ønsker det.

Jeg overlever nok :-)
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