Session、Cookie简单理解

Session:

  session是一种记录客户状态的机制,session是保存在服务器上的,当浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是所谓的session,当浏览器再次访问的时候从该session中查找客户的状态就可以了。

  看到一个很经典的描述session的话--“session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了”

 

  Session对象是在浏览器第一次请求服务器的时候创建的,如果用原始的servlet,通过request.getSession();方法获取session对象。如果用spring的话,直接在方法参数里设置HttpSession即可。

  Session的声明周期:

session的创建--在用户第一次访问服务器的时候创建。注意只有访问jsp、servlet时才会创建,访问一些如HTML的静态资源并不会创建;

session失效--访问的用户越多,创建的session越多,超过一定数量就会导致内存溢出,为了防止这种情况的发生,服务器会把长时间没有活跃(访问)的session从内存中删除,如果超过了这个时间没有访问服务器,session就会失效,这也是我们在一个页面停留时间过长没有操作就会提醒我们重新登录的情况。

 

Cookie:

  提到cookie必然会想到一个很经典的购物的例子:用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。这个例子中可以看出,同一个用户的所有请求必然要属于同一个会话,这才符合我们正常点的逻辑思维。

  cookie需要浏览器支持,它是依赖于浏览器的,实际上就是一段文本信息。当浏览器发出请求的时候,服务器要记录这个用户的状态,就会使用response向浏览器颁发一个Cookie,浏览器会把颁发的cookie保存起来。当浏览器再次发出请求的时候,请求会连带着cookie一同交给服务器,服务器依靠传过来的cookie来识别用户的身份信息。

经常访问一些网站的登录页面的时候,大部分都有记住密码,这个功能就是利用cookie来实现的。

 

Session和Cookie的关系:Session根据Cookie来识别是否是同一个用户。Cookie中保存有一个JSESSIONID的东西,它的值就是该Session的ID,通过它来判断是否是同意用户。

 

posted @ 2017-09-06 15:39  vetter  阅读(172)  评论(0编辑  收藏  举报