session

一.session和cookie的区别

    cookie: 把用户数据写给用户的浏览器,用户数据保存在本地.

    session:把用户数据写给到用户独占的session中,

                session对象创建好了在服务其中,根据cookie中存放的id找到每个用户对应的session.

二.session销毁的两种途径

    1.调用invalidate()方法

    2.没有人访问session达到指定时间(例如开着浏览器但跑出去玩了

    时间配置:以分钟为单位

  <session-config>
  	<session-timeout>30</session-timeout>
  </session-config>
三.更改session所依赖cookie的存储时间
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		HttpSession session=request.getSession();
		String id=session.getId();
		/*
		 * session是依赖于cookie的,但它并没有指定cookie的存放时间,所以浏览器一关闭,该session销毁.
		 * 但现实应用中,如电商网站,若用户一不小心将浏览器关闭,我们不能让用户重新选择刚刚已经选择好的商品,则自已新建一个存储session id的cookie,覆盖原来的cookie
		 */
		Cookie cookie=new Cookie("JSESSIONID", id);        //默认id对应的名字为"JSESSIONID"
		cookie.setPath("/test");				//设置可以访问该cookie的路径为该app
		cookie.setMaxAge(30*60);		//我们设置session在没人使用30分钟后即失效,则对应其存储id的cookie也设为相同时间
		response.addCookie(cookie);
		session.setAttribute("name", "aaa");
		
	}

四.session的序列化(关闭服务器生成文件)

1.关闭序列化

   /apache-tomcat-9.0.5/conf/context.xml 中加入:   <Manager pathname="" />

2.序列化:关闭服务器后,会自动生成一个文件保存session中的数据.等到服务器开启式,读取文件,文件消失.

   文件地址:tomcat/work/catalina/localhost/项目/SESSIONS.ser

3.session中存放的属性也会跟着一起序列化, 前提: 实现serilizeble接口

五.钝化与活化(没关就生成)

1.钝化:超过规定时间,session从内存转移到硬盘中,生成session文件(seesionid.session  *一个session一个文件)

            或:活动会话数目太多,达到限制值

          生成地址:tomcat/work/catalina/localhost/项目/

2.活化:从硬盘中加载session到内存  (处于会话的客户端向服务器发出请求)

3.配置:

六.session的历程

1.创建:当一个浏览器第一次请求访问一个应用支持会话的网页

        -->servlet容器寻找请求中带sessionid的cookie-->找不到-->创建session对象

        -->将sessionid作为cookie保存在相应结果中

        -->浏览器收到相应结果,将cookie保存在客户端

2.再次访问(同一个应用中任意一个支持会话的页面):

        http请求中包含带sessionid的cookie-->servlet容器在请求中寻找

        --->找到后,根据id找到内存中对应的session对象(即客户端只保存sessionid,真正的session在服务器端)

3.销毁

    1)浏览器进程终止(*可根据上面的示例设置对应session的cookie,是关闭浏览器后cookie保存在本地)

    2)invalidate()方法

    3)会话过期 (也可进行相关配置,使超过时间后session钝化,存放至服务器硬盘)

        设置会话最大不活动时间:setMaxInactiveInterval(秒);   !!若为负数,代表永久

        

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值