cookie 和 session

会话技术:

用户打开一个浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程称为是一次会话.每个用户与服务器进行交互过程中,产生一些各自的数据,程序想要把这些数据进行保存,就需要使用会话技术.

Cookie技术

Cookie是客户端技术,程序把每个用户的数据以cookie的形式保存到各自的浏览器中.当用户再次访问服务器的web资源时,以前访问的数据就会带到服务器.

如果创建了一个Cookie,并发送到浏览器,默认情况下它是一个会话级别的Cookie。用户退出浏览器就被删除。如果希望将这个Cookie存到磁盘上,需要设置有效时长调用setMaxAge(int maxAge)方法,以秒为单位的。

Session技术:

Session是服务器端技术,利用这个技术,服务器在运行时为每一个用户的浏览器创建一个独享的session对象。由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源的时候,其他web资源再从用户各自的session中取出数据为用户服务。

Session对象由服务器创建,可以通过request的getSession()方法获取

Session的实现原理:基于Cookie回写了一个Session的ID.

Session作为域对象,作用范围就是一次会话的范围。一次会话,指的是用户打开浏览器点击多个超链接,访问服务器资源,到最后关闭浏览器的过程。

Cookie和Session比较

Cookie局限性:
Cookie保存的数据是有个数和大小的限制的。
数据是保存客户端浏览器上(相对不是很安全)

Session优势:
Session没有个数和大小限制。
数据是保存在服务器上(相对比较安全)

Servlet的域对象的总结

请求范围(ServletRequest)

创建与销毁
创建:当用户向服务器发送一次请求,服务器创建一个request对象。
销毁:当服务器对这次请求作出了响应,服务器就会销毁这个request对象

数据存取
存数据:
void setAttribute(String name,Object value);

取数据
Object getAttribute(String name);
作用范围
作用范围:一次请求。(转发就是一次请求)。

会话范围(HttpSession)

创建与销毁
创建:服务器端第一次调用getSession()方法的时候。
销毁:三种情况。
Session过期,默认的过期时间30分钟(web.xml中配置)。
非正常关闭服务器。(正常关闭服务器—session会被序列化)。
手动调用session.invalidate();

数据存取
存数据:
void setAttribute(String name,Object value);

取数据
Object getAttribute(String name);
作用范围
作用范围:一次会话(多次请求)

应用范围(ServletContext)

创建与销毁
创建:服务器启动的时候创建,为每个web项目创建一个单独ServletContext对象。 
销毁:服务器关闭的时候,或者项目从服务器中移除的时候。

数据存取
存数据:
void setAttribute(String name,Object value);

取数据
Object getAttribute(String name);
作用范围
作用范围:整个应用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值