一、Cookie机制

在web程序中是使用HTTP协议来传输数据的,因为http是无状态协议,一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次交换数据需要建立新的连接,所以无法实现会话跟踪,cookie技术则弥补了这一缺陷。

cookie实际上一段的文本信息,客户端请求服务器。如果服务器需要记录该用户的状态,就使用response向客户端浏览器颁发一个cookie。客户端浏览器会把cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该cookie一同提交给服务器。服务器检查该cookie,以此来辨认用户的状态。服务器还可以根据需要修改cookie的内容。

cookie生命周期:

cookie的maxAge决定cookie的生命周期,单位为秒(second)。cookie通过getMaxAge()方法和setMaxAge()方法来获得maxAge属性,如果maxAhe属性为正,则表示cookie会在maxAge秒之后自动失效。如果maxAge属性为负,则说明cookie仅在本浏览器窗口和本窗口打开的子窗口下有效,关闭窗口cookie则失效。maxAge的默认值是-1当maxAge的值为0时,表示删除cookie。

Cookie cookie  = new Cookie("username","ainimomoda");

cookie.setMaxAge(Integer.Max_Value);//设置生命周期为Max_Value

response.addCookie(cookie);//输出到客户端

二、Session机制

session也是一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,而session保存在服务器上。客户端浏览器访问服务器是时候把客户端信息以某种形式记录在服务器上,这就是session中查找该客户的状态。

session生命周期:

session保存在服务器端,为了获得更高的存取速度,服务器一般把session放在内存。每个用户都会有一个独立的session,如果session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。

session在用户第一次访问服务器的时候自动创建,需要注意只有访问JSP,Servlet等程序时才会创建session;只要访问HTML、IMAGE等静态资源不会创建session。如果尚未生成session,可以使用request.getSession(true)强制生成session。

session生成后,只要用户访问,服务器就会更新session的最后访问时间,并维护该session。用户每访问服务器一次,无论是否续写session服务器都认为该用户的session活跃(active)了一次。

Session对应的类是javax.servlet.http.HttpSession,每一个访问者都对应一个session对象,并将其状态信息保存在这个session对象中,session对象的创建是在用户第一次访问服务器时产生的。

HttpSession session = request.getSession();//获取session对象

session.setAttribute("username",zhangsan);//设置session属性

out.println(session.getAttribute());//获取session属性

三、cookie和session的区别:

1. cookie数据放在客户端浏览器,session放在服务器;

2. cookie没有session安全;

3. session会在一定时间保存在服务器上,所以会占用服务器内存;

最新文章

  1. 【C#公共帮助类】WinRarHelper帮助类,实现文件或文件夹压缩和解压,实战干货
  2. Akka初步介绍
  3. Structs框架
  4. Android模拟器Genymotion如何访问本地服务器?
  5. Docker入门教程(七)Docker API
  6. jsp&servlet学习笔记
  7. python_操作oracle数据库
  8. 修改hosts文件解决OneDrive被墙的问题
  9. CentOS CVS安装使用
  10. 在本地调试微信项目(C#)
  11. 豆瓣电影Top250基本信息抓取
  12. Slf4j+Log4j日志框架入门
  13. scrapy crawl rules设置
  14. python之造测试数据-faker(转载)
  15. 读书笔记二 How Does the Internet work?
  16. docker之harbor仓库注意事项
  17. uboot i2c 操作函数记录
  18. 十三、K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
  19. 第8月第22天 python scrapy
  20. 深度学习笔记(六)VGG14

热门文章

  1. php对象转换为数组的部分代码
  2. 梯度直方图(HOG,Histogram of Gradient)
  3. 【原创】大叔经验分享(78)hive查询报错NoViableAltException
  4. JavaScript Basics_Fundamentals Part 2_A simple calendar
  5. What is libacl.so.1 ?
  6. 说一下 HashMap 的实现原理?(未完成)
  7. shell脚本基础编写
  8. Lambda表达式语法进一步巩固
  9. Gym - 102141D 通项公式 最短路
  10. switch结构