一、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会在一定时间保存在服务器上,所以会占用服务器内存;

session机制、cookie机制的更多相关文章

  1. HTTP Session、Cookie机制详解

    一.什么是http session,有什么用 HTTP协议本身是无状态的,本身并不能支持服务端保存客户端的状态信息,于是,Web Server中引入了session的概念,用来保存客户端的状态信息. ...

  2. 深入理解Session和Cookie机制

    具体来说cookie机制采用的是在客户端保持状态的方案.它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持.cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力. 而 ...

  3. Session 和cookie机制详解

    参考: http://blog.csdn.net/fangaoxin/article/details/6952954/ http://blog.csdn.net/hjc1984117/article/ ...

  4. JWT的初步了解以及session、cookie机制

    1.什么是状态保持? 想要了解JWT,首先需要知道什么是状态保持,举一个例子来说:无论是在web上还是在手机app上,我们都可以以游客的身份访问,此时都会有登录/注册字眼,当我们登录之后,就会是我们的 ...

  5. session和cookie

    第一次听到cookie这个词的时候着实兴奋了一段时间,以为是小饼干呢~快喝一杯82年的java压压惊!哈哈~ 与cookie的第一次邂逅——清缓存和清cookie 刚毕业的时候上班,做二次开发,明明后 ...

  6. ASP.NET MVC5总结(三)登陆中常用技术解析之session与cookie

    1.session机制 session机制是在服务器端保持状态的方案,在做系统登陆时,我们往往会用到session来存储一些用户登录的重要信息,而这些信息是不能存在cookie中的. 当访问量增多时, ...

  7. session和cookie详解2

    http 之session和cookie http://www.cnblogs.com/ForEverKissing/archive/2008/05/23/1205503.html Session简介 ...

  8. 再续session和cookie (网络整理)

    摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java ...

  9. session和cookie详解

    摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一 技术.本文将详细讨论session的工作机制并且对在Java ...

  10. (转)http 之session和cookie

    http://www.cnblogs.com/xuxm2007/archive/2011/12/05/2276705.html Session简介 摘 要:虽然session机制在web应用程序中被采 ...

随机推荐

  1. VS219 没有.net core 3.0模板

    控制台命令 dotnet --info dotnet --version 都正常显示有安装3.0 需要升级VS 2019 16.3.3,本地版本为16.3.2

  2. 解决 Oracle TNSListener 服务启动找不到路径问题

    TNSListener服务无法启动,提示从系统无法找到指定路径! 解决方法: 在控制面板/管理工具/服务中双击打开OracleOraHome92TNSListener的服务看到其 “可执行文件的路径” ...

  3. JS基础_返回值的类型

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. ReactNative 踩坑笔记

    1.fatal error: 'React/RCTBridgeDelegate.h' file not found 这个问题是应为没有安装cocoaPods 所以无法安装ios需要的第三方库.安装co ...

  5. sklearn--决策树和基于决策树的集成模型

    一.决策树 决策树一般以选择属性的方式不同分为id3(信息增益),c4.5(信息增益率),CART(基尼系数),只能进行线性的分割,是一种贪婪的算法,其中sklearn中的决策树分为回归树和分类树两种 ...

  6. 编译原理实战——使用Lex/Flex进行编写一个有一定词汇量的词法分析器

    编译原理实战--使用Lex/Flex进行编写一个有一定词汇量的词法分析器 by steve yu 2019.9.30 参考文档:1.https://blog.csdn.net/mist14/artic ...

  7. IPV4和IPV6的划分

    IP(Internet Protocol,网络互联协议)地址就是连接互联网的主机被分配或指派的一段数字标识,是传输报文组装时最重要的组成部分,用来在互联网中数据传输时标识源和目标主机. IPv4 IP ...

  8. zencart单独屏蔽左右边栏代码

    1.屏蔽左栏:打开模板目录下的tpl_main_page.php文件,找到以下代码 if (!isset($flag_disable_left) || !$flag_disable_left) { 在 ...

  9. Selenium&Appium四种等待方式

    一.摘要 本博文主要介绍自动化测试中,无论是selenium或是Appium的四种等待方式,合理的使用等待对代码的稳定性,测试效率都有很大的提高 隐式等待:是在尝试发现某个元素的时候,如果没能立刻发现 ...

  10. ECMAScript 6 入门——ES6 声明变量的六种方法

    ES6 声明变量的六种方法 ES5 只有两种声明变量的方法:var命令和function命令.ES6 除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和cla ...