Cookie与Session详解

Cookie与Session详解

标签(空格分隔): 面试


Cookie与Session的区别和联系

  1. Session和Cookie有什么用?
    Cookie和Session都是为了在Http协议中保持用户与服务端的交互状态。

  2. Cookie是什么?
    Cookie是Http头中的一个字段,用户访问服务器后,服务器返回给用户一些键值对,通过Set_Cookie表示相应头。该用户下次访问,会将Cookie放在Request请求头中返回给服务器。

  3. Session是什么
    Session是我们人为保持的一个会话,每次交互不需要传回所有值,只要传递一个唯一的ID,该ID为JSESSIONID,因此Session基于Cookie来工作。服务端通过SessionID创建HttpSession对象。

  4. Cookie和Session的区别
    Cookie存储在浏览器,Session存储在服务端的一个文件里,Session依赖于SessionID;Session存在于Cookie中;Cookie可被访问,Session隐私性较好。

Session的销毁

1.关闭浏览

关闭浏览器的操作,再次打开浏览器时就会发现没有办法自动登录了,需要重新输入用户名和密码。这时就代表着session被结束了。

但是并不意味着此时的session就是被销毁了。

为session 的创建和销毁是在服务器端进行的,当浏览器访问服务器就会创建一个sessionid,浏览器通过这个ID来访问服务器中所存储的session,当关闭浏览器后,再次打开浏览器访问服务器,你的浏览器已经失忆了,他忘记了之前的那个sessionid,所以他也就找不到了服务器端他的session内容,所以你只有再次登录,那么这时就会创建一个新的sessionid,存入一个新的session内容,而不是之前的那个id。而创建的session由服务器自己控制销毁,当然也可以在服务器端代码中销毁。

2.设置Session过期

一:
在web容器中设置(以tomcat为例):在tomcat-7.0\conf\web.xml中设置,以下是tomcat7.0中默认配置:

<span style="font-family:SimHei;font-size:18px;"><session-config>  
<session-timeout>30</session-timeout>  
</session-config>  
</span>  

tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间。这里要注意这个session设置的时间是根据服务器来计算的,而不是客户端。所以如果在调试程序,应该是修改服务器端时间来测试,而不是客户端。

二:
在工程的web.xml中设置,设置方法同上

三:
通过Java代码设置

<span style="font-family:SimHei;font-size:18px;">session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效</span>  

3.invalidate()

Java中request.getSession().invalidate(); 是使客户端对应的整个Session失效,里面所有东西都清空了,同时释放内存资源,注意如果同一客户端另一种浏览器中的Session不受影响【session是跟浏览器种类有关的,不同种浏览器中的session相互独立】;

<span style="font-family:SimHei;font-size:18px;">退出销毁session的Action方法  
/**  
     * 用户退出的方法  
     */  
    public String quit(){  
        // 销毁session  
        ServletActionContext.getRequest().getSession().invalidate();  
        return "quit";  
    }  
</span>  

4.invalidate()

request.getSession().remove(); 是把session中不需要的变量清空,同时释放其所占的内存空间,而没有把整个session清空;

request.getSession().removeAttribute("xName"); //仅清空session中名称为xName的变量值,整个session其它不受影响;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值