关于session的一些学习理解(个人理解)
服务器端会话技术:Session(将数据存放在服务器端对象中)*共享数据:一次会话中共享数据
*共享数据:一次会话中共享数据
(1)、获取HttpSession对象
HttpSession session=request.getSession();
//**是request对象获取session
(2)、使用HttpSession对象:
Object getAttribute(String name)
void setAttribute(String name,object value)
void removeAttribute(String name)
实现原理
session的实现是依赖于cookie。当客户端第一次访问服务器端时候,服务器端会自动创建一个session对象,并且响应一个set-cookie头到客户端,该set-cookie头携带了服务器端创建session的id,当下一此客户端再次访问服务器其他资源的时候,会带着cookie头向服务器做出请求,服务器识别cookie中的session的id找到对应的session实现数据的共享
一些细节
(1)、客户端关闭后,服务器端不关闭,两次获取的session是否是同一个?
不是,默认情况下不是。若要实现session持久化,需要创建一个cookie,将session的id值放到cookie中。再设置cookie的存活时间
HttpSession session=request.getSession();
//**设置session的值
session.setAttribute("name","ljiayu");
//**创建cookie使得session持久化
Cookie cookie=new Cookie("JSESSIONID",session.getId());
//**设置cookie的存活时间
cookie.setMaxAge(60*30);
response.addCookie(cookie)
//**其中cookie的name值必须为JSESSIONID
(2)、当客户端不关闭时,服务器关闭后,两次获取session是同一个吗?
不是同一个,由于之前在服务器端的session在服务器关闭时,之前创建的session别销毁了
实现session中的数据不丢失:
session钝化:服务器正常关闭之前,将session对象序列化到硬盘
session活化:服务器启动后将session文件转化为内存的session对象中。
//**idea只能钝化不能活化,但是tomcat可以,以后都将项目部署到tomcat服务器上面。在tomcat中部署了项目后,关闭服务器tomcat会将服务器上的session存放到tomcat的work目录下,等tomcat再次启动会将该文将加载进内存
(3)、session的失效时间?
*服务器被关闭时:
*调用方法invalidate()自我销毁
*默认三十分钟自动被销毁
可以选择性配置
30
在tomcat的配置文件中配置
*特点:
(1)、session用于存储一次会话的多次请求数据,存在服务器端
(2)、session可以存储在任意类型,任何大小的数据