java中的Session

一、什么是session?

    session称为“会话控制”,Session 对象存储特定用户会话所需的属性及配置信息。

二、session的机制是什么?

java中的Session_第1张图片

     当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端是否包含一个session标识(即JSESSIONID)。

     如果是第一次请求服务器,服务器会创建session,并创建Cookie,在Cookie中保存Session的id,发送给客户端,这样客户端就有了自己的session的id了。但这个Cookie只在浏览器内存中存在,也就是说,在关闭浏览器窗口后,Cookie就会丢失,也就丢失了sessionId。

    如果是第二次请求服务器,会在请求中把保存的sessionId的Cookie发送给服务器,服务器通过sessionId查找session对象,然后给使用。也就是说,只要浏览器容器不关闭,无论访问服务器多少次,使用的都是同一个session对象。这样也就可以让多个请求共享同一个session了。

    当用户关闭了浏览器窗口后,再打开浏览器访问服务器,这时请求中没有了sessionId,那么服务器会创建一个session,再把sessionId通过Cookie保存到浏览器中,也是一个新的会话开始了。原来的session会因为长时间无法访问而失效(默认保留时间为30分钟)。

    当用户打开某个服务器页面长时间没动作时,这样session会超时失效,当用户再有活动时,服务器通过用户提供的sessionId已经找不到session对象了,那么服务器还是会创建一个新的session对象,再把新的sessionId保存到客户端。这也是一个新的会话开始了。

三、怎样创建和删除session?

   创建session:

//创建session
HttpSession session = request.getSession();

    删除session:

//删除session
session.invalidate();

     当 距离上次收到客户端发送的session id 时间间隔超过了session的最大有效时间(默认30分钟)也会被删除。

     服务器进程停止也会被删除。

四、session有什么作用?

       session是用来解决Http协议不能维持状态的问题。session只存储在服务器端的,不会在网络中进行传输,所以session是相对安全的。session是依赖cookie的,当用户访问某一站点时,服务器会为这个用户产生唯一的session_id,并把这个session_id以cookie的形式发送到客户端,以后的客户端的所有请求都会自动携带这个cookie。

你可能感兴趣的:(Java,Web)