Presentation is loading. Please wait.

Presentation is loading. Please wait.

Session Tracking Lec 31. Revisiting Session Tracking HTTP is a stateless protocol  Every request is considered independent of every other request Many.

Similar presentations


Presentation on theme: "Session Tracking Lec 31. Revisiting Session Tracking HTTP is a stateless protocol  Every request is considered independent of every other request Many."— Presentation transcript:

1 Session Tracking Lec 31

2 Revisiting Session Tracking HTTP is a stateless protocol  Every request is considered independent of every other request Many web applications need to maintain a conversational state with the client  A shopping cart is a classic example

3 Store State Somewhere Server Side?  Makes Server Really Complicated  State per client! Client Side?

4 “Post-Notes” Server puts little notes on the client side When client submits the next form, it also (unknowingly) submits these little notes Server reads the notes, remembers who the client is

5 Three Typical Solutions Cookies URL Rewriting Hidden Fields

6 Handling Cookies

7 Potential of Cookies Idea  Web server sends a simple name-value pair to client (web browser etc.)  Saved by the client  Later, Client returns same name and value when it connects to same site (or same domain, depending on cookie settings)

8 Potential of Cookies Typical Uses of Cookies  Identifying a user during an e-commerce session Servlets have a higher-level API for this task  Avoiding username and password  Customizing a site  Focused advertising

9 Sending Cookies to Browser Create a Cookie object Cookie c = new Cookie("name", "value"); Set the Maximum age etc  Cookie persists on disk c.setMaxAge(seconds); // Set other attributes. Place the Cookie into HTTP response  If you forget this step, no cookie will be sent to the browser response.addCookie(c);

10 Reading Cookies from Browser To read incoming cookies, get them from request object Cookie[] cookies = request.getCookies(); Once you have an array of cookies, you can iterate over it  Use getName and getValue to retrieve cookie name & value respectively for(int i=0; i<cookies.length; i++) { Cookie c = cookies[i]; if (c.getName().equals("someName")){ // doSomethingWith cookie break; }

11 Example 1: RepeatVisitor This servlet checks for a unique cookie, named “repeat”.  If the cookie is present, servlet says “Welcome Back”  Otherwise, servlet says “Welcome Aboard”.

12 Example Code Repeat Visitor

13 Using Cookies to Detect First-Time Visitors (Results)

14 HTTP Cookies String sID = makeUniqueString(); Hashtable sessionInfo = new Hashtable(); Hashtable globalTable = findTableStoringSessions(); globalTable.put(sID, sessionInfo); Cookie sessionCookie = new Cookie("JSESSIONID", sID); response.addCookie(sessionCookie); 1239865610 Credit: cs193i at Standford

15 HTTP Cookies String sID = makeUniqueString(); Hashtable sessionInfo = new Hashtable(); Hashtable globalTable = findTableStoringSessions(); globalTable.put(sID, sessionInfo); Cookie sessionCookie = new Cookie("JSESSIONID", sID); response.addCookie(sessionCookie); 1239865610 Credit: cs193i at Standford

16 HTTP Cookies String sID = makeUniqueString(); Hashtable sessionInfo = new Hashtable(); Hashtable globalTable = findTableStoringSessions(); globalTable.put(sID, sessionInfo); Cookie sessionCookie = new Cookie("JSESSIONID", sID); response.addCookie(sessionCookie); 1239865610 Credit: cs193i at Standford

17 HTTP Cookies String sID = makeUniqueString(); Hashtable sessionInfo = new Hashtable(); Hashtable globalTable = findTableStoringSessions(); globalTable.put(sID, sessionInfo); Cookie sessionCookie = new Cookie("JSESSIONID", sID); response.addCookie(sessionCookie); 1239865610 Credit: cs193i at Standford

18 HTTP Cookies String sID = makeUniqueString(); Hashtable sessionInfo = new Hashtable(); Hashtable globalTable = findTableStoringSessions(); globalTable.put(sID, sessionInfo); Cookie sessionCookie = new Cookie("JSESSIONID", sID); response.addCookie(sessionCookie); 1239865610 JSESSIONID → 1239865610 Credit: cs193i at Standford

19 HTTP Cookies String sID = makeUniqueString(); Hashtable sessionInfo = new Hashtable(); Hashtable globalTable = findTableStoringSessions(); globalTable.put(sID, sessionInfo); Cookie sessionCookie = new Cookie("JSESSIONID", sID); response.addCookie(sessionCookie); 1239865610 Set-Cookie: JSESSIONID=1239865610; Credit: cs193i at Standford

20 HTTP Cookies Cookie: JSESSIONID=1239865610; // On request String sID = getCookieValue("JSESSIONID"); Hashtable globalTable = findTableStoringSessions(); Hashtable sInfo = (Hashtable) globalTable.get(sID); // sInfo contains the data related to user Credit: cs193i at Standford

21 HTTP Cookies Cookie: JSESSIONID=1239865610; // On request String sID = getCookieValue("JSESSIONID"); Hashtable globalTable = findTableStoringSessions(); Hashtable sInfo = (Hashtable) globalTable.get(sID); // sInfo contains the data related to user Credit: cs193i at Standford

22 HTTP Cookies Cookie: JSESSIONID=1239865610; 1239865610 // On request String sID = getCookieValue("JSESSIONID"); Hashtable globalTable = findTableStoringSessions(); Hashtable sInfo = (Hashtable) globalTable.get(sID); // sInfo contains the data related to user Credit: cs193i at Standford

23 Example : Online Book Store using cookies netBeans project -CookieSessionEx


Download ppt "Session Tracking Lec 31. Revisiting Session Tracking HTTP is a stateless protocol  Every request is considered independent of every other request Many."

Similar presentations


Ads by Google