Servlet会话机制:

  Http是一种无状态协议,它是无记忆的。也就是说,服务器不会保存用户的任何信息,当同一用户再次去访问时,服务器是不认识你的,它还是会建立新的连接。

但有时候我们需要服务器保留用户的信息,用以识别同一用户的多次访问,此时我们就要用到会话机制,它是通过容器的HttpSession的对象实现的。

  会话的创建:Servlet通过request对象获得HttpSession对象

      HttpSession session = request.getSession();

  会话的生命周期:

  Session是保存在服务器端内存中的,服务器会为每个用户分配存储空间用于存储它们的信息,并且为每个用户生成一个唯一标识(SessionID)用以区分不同用户,并且一般保存在客户端的Cookie中。它的特点是安全性高,但存太多session会占用服务器内存。

一个很形象的举例:

  客户(客户端用户)去一个商店(服务器端)消费,但这个商店不会记住每个每个消费者的信息(Http是无状态协议),但是对于一部分消费者可以办会员卡,商店自己存储这些会员的信息(session是存储在服务器端的),并发放给会员一张会员卡(里面有确认这个会员的SessionID)。下次客户再来消费,就可以在商店凭着会员卡上的SessionID找到同时保存在商店的你的信息。

  参考资料: http://www.cnblogs.com/kissdodog/archive/2013/02/08/2909292.html

       http://www.cnblogs.com/agilework/articles/2290240.html

Session和Cookie的区别:

  session保存在服务器端,所以优点是安全性高,缺点是存太多session会占用服务器内存。cookie反之。

  参考资料: http://blog.csdn.net/macsnow/article/details/6893191

  cookie:  

      新建:

    Cookie cookie = new Cookie();
cookie.setMaxAge(60*60*24*365);
response.addCookie(cookie);

  

             

Servlet基础知识(三)—— 会话机制Session,Session和Cookie的异同的更多相关文章

  1. Servlet基础(三) Servlet的多线程同步问题

    Servlet基础(三) Servlet的多线程同步问题 Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率. 由于Servlet/JSP默认是以多线程模式执行的, ...

  2. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  3. Python基础知识(三)

    Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...

  4. Java Web(三) 会话机制,Cookie和Session详解

    很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因可能是没能好好理解这两种会话机制,所以会一直遗忘,一直重新回过头来学习它,今天好好把他总 ...

  5. Java Web(三) 会话机制,Cookie和Session详解(转载)

    https://www.cnblogs.com/whgk/p/6422391.html 很大一部分应该知道什么是会话机制,也能说的出几句,我也大概了解一点,但是学了之后几天不用,立马忘的一干二净,原因 ...

  6. web开发(三) 会话机制,Cookie和Session详解

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6422391.html>,在此仅供学习参考之用. 一.会话 ...

  7. Servlet基础知识

    基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...

  8. JSP SERVLET 基础知识

    jsp(java server page)和servlet是JAVA EE规范的两个基本成员,是JAVA WEB开发的重点也是基础知识.JSP本质上也需要编译成SERVLET运行. JSP比较简单,可 ...

  9. 快速掌握JavaScript面试基础知识(三)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

随机推荐

  1. 得到文件的MD5值

    /// <summary> /// 得到文件的MD5值 /// </summary> /// <param name="Path">文件路径&l ...

  2. Ubuntu引导修复问题

    Ubuntu和Win7双系统,一不小心在Ubuntu下把Win7 C盘的boot目录给删了(手贱呀),然后Win7就没了,后来找了张WinPE启动盘修复了Win7引导结果,Ubuntu系统的引导没了. ...

  3. leetcode Search for a Range python

    class Solution(object): def searchRange(self, nums, target): """ :type nums: List[int ...

  4. QF——OC的多态,动态绑定及实现原理

    多态: 封装,继承,多态是面向对象的三大特征. 那多态到底是什么呢? 多态:允许不同的类定义相同的方法,OC能自己判断当前类所对应的方法,不会混乱. 动态类型:程序直到运行时才确定对象的类型. 动态绑 ...

  5. zabbix中文配置及乱码问题

    1.切换成中文 2.发现有乱码出现 由于zabbix的web端没有中文字库,所以我们使用windows中的字体. 找到简体字的存储位置——copy到桌面或其他位置——上传到zabbix服务器——web ...

  6. 在struts2中整合ajax时出现Template /template/ajax/head.ftl not found错误时的处理方法

    Struts2 Ajax出现错误“Template /template/ajax/head.ftl not found” 2013-02-08 18:26:27|  分类: 默认分类|字号 订阅   ...

  7. Docker镜像与仓库(二)Dockerfile

    Docker镜像文件与仓库(二) Docker镜像文件与仓库(二) Dockerfile指令 Dockerfile格式: 1.#Comment注释2.INSTRUCTION大写的指令名 argumen ...

  8. DB2 相关操作

      查看数据库版本:db2level DB21061E  Command line environment not initialized. windows命令行下,需要先调用db2cmd,或者DB2 ...

  9. 利用VHDL读写file文件

    library ieee;     use std.textio.all;     use ieee.std_logic_textio.all;     use ieee.std_logic_1164 ...

  10. CSS自学笔记(7):CSS定位

    很多时候,我们需要对一些元素进行自定义排序.布局等,这是就需要用到CSS的定位属性了,用这些属性对一些元素进行自定义排序.布局等操作,可以改变浏览器默认的死板的排序. CSS定位的功能很容易理解,它允 ...