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?
Annonceindlæg fra inspirit365
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.
23. marts 2001 - 11:27
#2
hvad har du sat din \'session\' til ?
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?
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.
23. marts 2001 - 11:48
#5
Kan du ikke prøve at indsætte et kodeeksempel?
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 :)
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!?!
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(); }
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
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!!!
23. marts 2001 - 14:16
#11
hmmmmmmm
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?
23. marts 2001 - 14:44
#13
yep du kan godt dele point imellem flere personer hvis du ønsker det. Jeg overlever nok :-)
Kurser inden for grundlæggende programmering