cookie 和 session

来源:互联网 发布:电脑主机 知乎 编辑:程序博客网 时间:2024/06/04 17:47

会话技术:

用户打开一个浏览器,点击多个超链接访问服务器的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);作用范围作用范围:整个应用
原创粉丝点击