利用Session,服务器能够标识出来自单个客户的一系列请求,并把这些请求组成一个单独的工作会话,就能区分不同的用户;同时服务器能够记住前面的请求的信息,以及对前一请求作出的处理信息,记住客户的操作状态。
当请求一个会话的时候,Servlet容器就创建一个HttpSession对象,有了这个对象,就可以利用这个对象保存客户的状态信息。
Servlet容器为HttpSession对象分配一个唯一的SessionID,将其作为Cookie的一部分(或URL的一部分)发送给浏览器,浏览器在内存中保存这个Cookie。当客户再次发送HTTP请求时,浏览器会将Cookie随请求一起发送,Servlet容器从请求对象中读取SessionID,然后根据SessionID找到对应的HttpSession对象,从而得到客户的状态信息。
Cookies
Cookies是一种由服务器发送给客户的片段信息,存储在客户端浏览器的内存中或硬盘上,在客户随后对该服务器的请求中发回它。
Cookie以键值对的方式记录会话跟踪的内容,服务器利用响应报头Set-Cookie来发送Cookie信息,请求报头利用Cookie发回它。
Set-Cookie响应报头的格式:
Set-Cookie: <\name>=<\value>[; <\name>=<\value>]…
[; expires=<\date>][; domain=<\domain_name>]
[; path=<\some_path>][; secure][; httponly]
说明:1、Name是Cookie的名字,Name=value属性–值对必须首先出现,在此之后的属性-值对可以以任何顺序出现。(在Servlet规范中,用于会话跟踪的Cookie的名字必须是JSESSIONID)。
2、Domain属性是可选的,用于指定Cookie在哪一个域中有效。所指定的域必须以点好(.)开始。
3、expires=<\date>: 设置cookie的有效期,如果cookie超过date所表示的日期时,cookie将失效。如果没有设置这个选项,那么cookie将在浏览器关闭时失效。
例如:
Set-Cookie: MODXOXd=”32434343322”; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/MODXOXd=”“;
当浏览器