Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw,...
-
Upload
ambrose-baker -
Category
Documents
-
view
221 -
download
0
Transcript of Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw,...
![Page 1: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/1.jpg)
Servlets, Sessions, Servlets, Sessions, and Cookiesand Cookies
Lecture 8Lecture 8
cs193i – Internet cs193i – Internet TechnologiesTechnologies
Summer 2004Summer 2004
Kelly Shaw, Stanford Kelly Shaw, Stanford UniversityUniversity
![Page 2: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/2.jpg)
Why Java Servlets Instead Why Java Servlets Instead of CGI?of CGI?
Efficient, Convenient, Powerful, Portable, Secure, Inexpensive Lightweight threads instead of OS threads
created Single copy of code brought into memory
for all threads versus per thread Data (session state) can be stored across
threads within servlet container Java is portable and secure Requires little expense once servlet
container integrated with web server
![Page 3: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/3.jpg)
Servlet StructureServlet Structure
Java Servlet Objects on Server Side Managed by Servlet Container
Loads/unloads servlets Directs requests to servlets
Request → doGet() Each request is run as its own
thread
![Page 4: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/4.jpg)
Web App with ServletsWeb App with Servlets
HEADERS
BODY
Servlet
doGet()……
GET …
Servlet Container
![Page 5: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/5.jpg)
5 Simple Steps for Java 5 Simple Steps for Java ServletsServlets
1. Subclass off HttpServlet2. Override doGet(....) method3. HttpServletRequest
getParameter("paramName")
4. HttpServletResponse set Content Type get PrintWriter send text to client via PrintWriter
5. Don't use instance variables
![Page 6: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/6.jpg)
Servlet/JSP ContainerServlet/JSP Container
Java Servlet 2.4 JavaServer Pages 2.0 Tomcat is the basis for the official
reference implementation
![Page 7: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/7.jpg)
HelloWorld.javaHelloWorld.javaimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class HelloWorldExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body bgcolor=\"white\">"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); }}
![Page 8: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/8.jpg)
import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;
public class RequestHeaderExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getHeader(headerName); out.println(name + “ = “ + value ); } }}
RequestHeaderExample.jRequestHeaderExample.javaava
![Page 9: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/9.jpg)
Servlet LifecycleServlet Lifecycle(Creation)(Creation)
Single instance created init() method called You can override init() in your
subclass of HttpServlet to do some initial code....
init() is NOT called again on further requests
![Page 10: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/10.jpg)
Servlet LifecycleServlet Lifecycle(Service Method)(Service Method)
On each request, the server spawns a new thread and calls service()
service() checks HTTP request type and calls appropriate doXXXX (Get, Post, Put...)
don't override service (unless you really know what you're doing)
![Page 11: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/11.jpg)
Servlet LifecycleServlet Lifecycle(doGet(), doPost())(doGet(), doPost())
Real meat of the web app is here doPost() can call doGet(), or
viceversa no doHead()... system uses headers
of doGet() result
![Page 12: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/12.jpg)
Servlet LifecycleServlet Lifecycle(destroy())(destroy())
For some reason (servlet idle, etc) the server may want to remove the servlet from memory
destroy() allows you to close DB connections, wrap up, etc...
Don't count on destroy to write persistent state (server may crash before you ever get here!)
![Page 13: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/13.jpg)
Accessing Request Accessing Request ComponentsComponents
getParameter("param1") getCookies() => Cookie[] getContentLength() getContentType() getHeaderNames() getMethod()
![Page 14: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/14.jpg)
Environment VariablesEnvironment Variables
JavaServlets do not require you to use JavaServlets do not require you to use the clunky environment variables used in the clunky environment variables used in CGICGI
Individual functions:Individual functions: PATH_INFOPATH_INFO req.getPathInfo()req.getPathInfo() REMOTE_HOSTREMOTE_HOST
req.getRemoteHost()req.getRemoteHost() QUERY_STRINGQUERY_STRING
req.getQueryString()req.getQueryString() ……
![Page 15: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/15.jpg)
Setting Response Setting Response ComponentsComponents
Set status first! setStatus(int)
HttpServletResponse.SC_OK... sendError(int, String) sendRedirect(String url)
![Page 16: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/16.jpg)
Setting Response Setting Response ComponentsComponents
Set headers setHeader(…) setContentType(“text/html”)
Output body PrintWriter out = response.getWriter(); out.println("<HTML><HEAD>...")
![Page 17: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/17.jpg)
J2EE APIJ2EE API
http://java.sun.com/j2ee/1.4/docs/api/index.html
HttpServletResponse, HttpServletRequest, HttpServlet, HttpSession...
![Page 18: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/18.jpg)
Developing ServletsDeveloping Servlets(Start w/ baby steps)(Start w/ baby steps)
Install TomcatInstall Tomcat Run TomcatRun Tomcat Run examplesRun examples
![Page 19: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/19.jpg)
Creating Your Own Creating Your Own ServletServlet
Write new servlet (e.g. Hi.java) Make sure Tomcat jar files are in your
classpath Compile servlet (javac Hi.java) Edit web.xml Restart the Tomcat Server/Servlet
Container http://<host>:8080/<webappname>/
servlet/Hi
![Page 20: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/20.jpg)
DebuggingDebugging
use out.println to the html print to a socket on localhost...
![Page 21: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/21.jpg)
Five Minute Five Minute BreakBreak
![Page 22: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/22.jpg)
Continuity ProblemContinuity Problem
Session: A user sits down, enters a website, does some work, exits
HTTP Stateless Does Keep-Alive Help?
![Page 23: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/23.jpg)
Client vs. Server SideClient vs. Server Side
Client Side Store Variable=Value Bindings in
HTML Page, or Cookies Server Side
Store Variable=Value Bindings in DB/Server Memory
Store Session ID on Client Side, to identify Client
![Page 24: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/24.jpg)
Three Typical SolutionsThree Typical Solutions
Cookies URL Rewriting Hidden Fields
![Page 25: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/25.jpg)
HTTP Cookies Grab-bagHTTP Cookies Grab-bag
Lifetime Lifetime Session – not written to file systemSession – not written to file system Persistent – written to user preferencesPersistent – written to user preferences
Only returns cookie to requesting Only returns cookie to requesting domaindomain
Cookie must be specified by contentCookie must be specified by content No special characters in cookieNo special characters in cookie
![Page 26: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/26.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
![Page 27: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/27.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
![Page 28: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/28.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
![Page 29: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/29.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
![Page 30: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/30.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
JSESSIONID → 1239865610
![Page 31: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/31.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
JSESSIONID → 1239865610PATH → /
![Page 32: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/32.jpg)
HTTP CookiesHTTP Cookies
String sID = makeUniqueString();Hashtable sessionInfo = new Hashtable();Hashtable globalTable = findTableStoringSessions();globalTable.put(sID, sessionInfo);Cookie sessionCookie = new Cookie("JSESSIONID", sID);sessionCookie.setPath("/");response.addCookie(sessionCookie);
1239865610
Set-Cookie: JSESSIONID=1239865610; path=/;
![Page 33: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/33.jpg)
HTTP CookiesHTTP Cookies
// On requestString sID = request.getCookie("JSESSIONID");Hashtable globalTable = findTableStoringSessions();Hashtable sInfo = (Hashtable) globalTable.get(sID);
Cookie: JSESSIONID=1239865610;
![Page 34: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/34.jpg)
HTTP CookiesHTTP Cookies
// On requestString sID = request.getCookie("JSESSIONID");Hashtable globalTable = findTableStoringSessions();Hashtable sInfo = (Hashtable) globalTable.get(sID);
Cookie: JSESSIONID=1239865610;
![Page 35: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/35.jpg)
HTTP CookiesHTTP Cookies
// On requestString sID = request.getCookie("JSESSIONID");Hashtable globalTable = findTableStoringSessions();Hashtable sInfo = (Hashtable) globalTable.get(sID);
Cookie: JSESSIONID=1239865610;
1239865610
![Page 36: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/36.jpg)
In-Browser Cookie In-Browser Cookie ManagementManagement
![Page 37: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/37.jpg)
URL RewritingURL Rewriting
Rewrite all URLs in response to contain SessionID http://foo.com/servlet/cart?id=123xyz
Parse out session ID from request line encodeURL() in HttpResponse object will
rewrite session-id onto URL Limitations
Always include ?sessionID=238423984 e.g.
http://www.amazon.com/exec/obidos/subst/home/home.html/103-0036360-1119059
![Page 38: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/38.jpg)
URL RewritingURL Rewriting
![Page 39: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/39.jpg)
Hidden Form FieldsHidden Form Fields
<input type=“hidden” name=“session” value=“...”>
![Page 40: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/40.jpg)
Java Servlet SolutionJava Servlet Solution
Session tracking API built on top of URL rewriting or cookies Look up HttpSession object associated
with current request (or create new one)
All cookie/URL rewriting mechanics hidden Look up information associated with a
session Associate information with a session
![Page 41: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/41.jpg)
Look up Session InfoLook up Session InfoHttpSession session = request.getSession(true);ShoppingCart sc = (ShoppingCart)session.getAttribute("shoppingCart");if (cart == null) {
cart = new ShoppingCart();session.setAttribute("shoppingCart", cart);
}...// do something with your shopping cart object
![Page 42: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/42.jpg)
HttpSession MethodsHttpSession Methods
public String getId() public boolean isNew() public long getCreationTime() public long getLastAccessedTime() public int getMaxInactiveInterval() public void
setMaxInactiveInterval(int secs) public void invalidate()
![Page 43: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/43.jpg)
Associate Info w/ SessionAssociate Info w/ SessionHttpSession session = request.getSession(true);session.setAttribute("referringPage",
request.getHeader("Referer"));
ShoppingCart cart =(ShoppingCart)session.getAttribute("previousItems");
if (cart == null) {cart = new ShoppingCart();session.setAttribute("previousItems", cart);
}
String itemID = request.getParameter("itemID");if (itemID != null) {
cart.addItem(Catalog.getItem(itemID));}
![Page 44: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/44.jpg)
Session TerminationSession Termination
Automatic! After a long enough interval (getMaxInactiveInterval)
![Page 45: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/45.jpg)
Session TrackingSession Tracking
Amazon
Servlet Container
Session ID = 123XYZ
Shopping Cart sc[item 1=324]
Request
![Page 46: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/46.jpg)
Session TrackingSession Tracking
Amazon
Servlet Container
Session ID = 123XYZ
Shopping Cart sc[item 1=324]
Response:Set-Cookie: sid=123XYZ
![Page 47: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/47.jpg)
Session TrackingSession Tracking
Amazon
Servlet Container
Session ID = 123XYZ
Shopping Cart sc[item 1=324]
Request:Set-Cookie: sid=123XYZ
![Page 48: Servlets, Sessions, and Cookies Lecture 8 cs193i – Internet Technologies Summer 2004 Kelly Shaw, Stanford University.](https://reader035.fdocuments.net/reader035/viewer/2022062407/56649e3f5503460f94b2fa24/html5/thumbnails/48.jpg)
Session TrackingSession Tracking
Amazon
Servlet Container
Session ID = 123XYZ
Shopping Cart sc[item 1=324 item 2=115]
Request:Set-Cookie: sid=123XYZ