session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

    不同的是Cookie保存在浏览器中,Session保存在服务器中。用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录在服务器,这就是Session.

    程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否包含了一个session标识,称为session id;如果已经包含一个session id则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为地在请求的URL后面附加上一个JSESSION的参数)。
    如果客户请求不包含session id,则为此客户创建一个session并且生成一个与此session相关联的session id,这个session id将在本次响应中返回给客户端保存。

    使用Cookie和附加URl参数都可以讲上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务端程序处理的难度,即使这样,传递的信息也是非常有限的,为此,各种服务器端的开发方案都提供了一种将会话状态保存在服务器端的技术,即Session技术.

    Cookie 与 Session 都能够进行会话跟踪,但是完成的原理不太一样。普通状况下二者均能够满足需求,但有时分不能够运用 Cookie,有时分不能够运用 Session。


    什么时候创建session对象:当客户端没有携带JSESSIONID,在执行request.getSession()方法时会创建新的session对象
    什么时候获取原有的session对象:当客户端携带了JSESSIONID,在执行request.getSession()方法时,会获取到JSESSIONID对应 的session对象,而不再创建。