(一)会话跟踪机制
java Servlet使用session来跟踪和管理会话内的状态。利用session,服务器可以把一个客户的所有请求联系起来,并记住客户的操作状态。
当客户第一次连接到服务器时,服务器为其建立一个session对象,并分配给客户一个唯一的标识(sessionID),以后客户每一次请求都要将这个标识一起提交。
服务器根据这个特定的标识找到特定的session对象,读取或者记录用户的信息。
有三种机制用于会话跟踪:
1)SSL
2)Cookies
3)URL重写
(二)Cookies——小甜饼
Cookies的种类繁多:Session Cookie 、 Persitent Cookie、Secure Cookie、HttpOnly Cookie、Third-part Cookie等。
这里我们重点关注Session Cookie。
A session cookie only lasts for the duration of users using the website. A web browser normally deletes session cookies when it quits. A session cookie is created when no Expires directive is provided when the cookie is created.【from WIKI】
从(一)里面可以知道,会话跟踪机制其实就是服务端给用户一个“会员卡”,用户每次请求时携带这张卡片。
将Cookies应用于会话跟踪机制,其实就是用Cookie记录会员卡号,那么Cookie理所当然就成为了“会员卡”。
(三)URL重写
浏览器有时候会拒绝甜饼(禁用Cookie),这时可以使用URL重写机制来完成了。
URL重写就是在url中附加标识客户的sessionID,servlet容器负责解析出sessionID,根据sessionID将请求与特定的session关联。
(四)Java Servlet API的会话跟踪
javax.servlet.http.HttpSession接口封装了session的概念,具体的Servlet容器提供了这个接口的实现。
其方法包括:
note:session只是服务端一种会话跟踪的方式,其依赖于Cookie机制(或者URL重写中的sessionID,原理一致!)。
java servlet中的HttpSession接口实现了这个思想,交由具体的容器实现。
javax.servlet.http.Cookie类的主要方法如下。
在servlet规范中,用于会话跟踪的Cookie的名字是JSESSIONID(该Cookie保存识别不同用户session的id),他通常保存在浏览器内存中,
当浏览器关闭后就删除,不能在多个浏览器间共享。
同样在servlet规范中,url重写机制中传递session id的参数名称为:jsessionid。