22. april 2003 - 16:10Der er
28 kommentarer og 1 løsning
Unik nummer til hver besøgende. Sessionid??
Jeg er begyndt at kigge lidt på det her JSP, og er nu rendt ind i et problem. Jeg vil lave en side med en indkøbskurv, så når en besøgende vælger et produkt bliver varen smidt over i kurven. For at siden skal kunne huske hvad den enkelte besøgende har lagt i kurven, skal den besøgende udstyres med et unikt nummer.
Problemet består i at få tildelt brugeren dette nummer. Jeg har forestillet mig at hente dette unikke nummer fra en tabel (A), så det nummer der er i tabel A altid svarer til den seneste besøgendes nummer. Siden skal altså huske denne sessionid. Jeg bruger MySQL som server for tabellerne. Hvis der er uklarheder så gør endelig opmærksom på dem.
Efter min mening er den bedste at lave en UID generator baseret på Scott Ambler high low approach.
Et alternativ, hvis du persisterer kurven med det samme er at bruge noget autonumber (der er for de fleste databas emulighed for at fiske det af databasen genererede nummer op).
Alternativt kan du selv bikse noget sammen f.eks. af serverens ip nummer og session objektets adresse.
Normalt vil man hvis man ikke persisterer bare gemme kurven i session objektet. Så har man slet ikke behov for den unikke ID. Men jeg formoder at du har grunde til at ville gøre det som du gør.
<<arne v>> Nu skal det siges at jeg er helt grøn på deher område, og jeg må nok sige at der kom flere ord jeg ikke lige fik fat i... Du snakker om at der ikke er behov for unikke ID. Hvad vil det sige at "persistere" kurven, og hvad indebærer den anden løsning du omtaler?
Jeg er ikke helt tilfreds med systemet i det eksempel fra tomcat, men grundidéen med en kurv er god nok...
Det er en indbygget feature i JSP/servlets at serveren kan holde styr på sessions d.v.s. det skal du ikke bekymre dig om.
Som en del af den service har JSP sider og servlets adgang til et session objekt som er det samme objekt i hele sessionen d.v.s. hvis man på en side gemmer noget i det så kan man hente det frem på en anden side bare de er en del af samme session.
Hvis det er tilstrækkeligt så behøver du ikke spekulere på unik ID.
Så kan man altså også smide en vare over i kurven, vende tilbage til produkt listen, vælge en ny vare, og når man så kigger i kurven ligger de der begge to? Det lyder nok noget nemmere.
Man skal normalt have nogle lidt specielle krav for at det er nødvendigt selv at generere UID'er (unikke ID'er). Men det hænder at man har brug for det.
Altså hvis jeg er så heldig at jeg får en bestilling, så vil jeg kunne hive en session id ud, som jeg kan assosiere med de bestilte varer og kundeinfo, så jeg kan se hvad kunden købte? Det bliver bedre og bedre det her.
Det jeg ikke kunne lide i det eksempel du sendte (loadet) var at 1. kurven var på samme side som varerne (det kan selvf. ændres), 2 at man skulle vælge varen igen for at slette den. Jeg har bygget det op således at produktlisten hentes fra en tabel (B), og altså ikke i en rullemenu. Jeg ved ikke om eksemplet stadig kan bruges til mit projekt.
Når jeg nu prøver at få siden frem ved at gemme den som *.jsp, kan jeg ikke få den frem. Nu er jeg godt klar over at det nok er optimistisk at tro at den ville virke, men hvordan gør jeg så?
Men hvordan bruger jeg den? Hvordan kan jeg få disse resultater frem på min egen side? Du lyder skeptisk arne v, kan du forklare nærmere hvordan du mener at man bør gøre?
Når jeg jeg indsætter min <% HttpSession session = request.getSession(true); %> får jeg at vide at: session is already defined in _jspService(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
Det er selvfølgelig fint nok at den er diffineret, men det skulle den da ikke være. Er det noget jeg kan ændre på?
Nå så virker det... Tak for hjælpen. Jeg går ud fra at loadet ikke ønsker nogen point, men også tak til ham.
60 points til dig arne v
<<Loadet>> hvis det er en forglemmelse at du ikke har smidt noget svar, så kan du lige skrive det...
Synes godt om
Ny brugerNybegynder
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.