1、  HTTP协议使用的是无状态连接,对容器而言,每一个请求都来自于一个新的客户。

2、

  • html表单隐藏字段;对用户在网站上的访问进行会话跟踪、为服务器端程序提供预定义的输入、存储动态产生的页面上下文信息;不足:只支持动态页面。
  • Cookie:
  • Session:
  • URL重写:

3、  cookie:

Web服务器为客户端浏览器并保存的简短文本信息;

客户端浏览器向服务器发送请求;服务器发送cookie给客户端;客户端再次发送请求给服务器;客户端返回cookie服务器端。

缺点:数据保存在客户端,用户可能会禁用cookie,导致数据失效。

cookies.setMaxages(毫秒数)可以设置cookies的最大生存时间。

response.addCookies()方法可以将cookies添加到响应中返回给客户端。

服务器在响应请求时,可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。

浏览器再次访问相同的应用时,会将原先的cookie通过请求信息带到服务器端。

4、  Session 服务器为客户端创建并维护的用于存放客户状态数据的对象。

用户可能会禁用Cookie,这时候可以重写URL地址来解决。

服务器可以为客户端创建并维护一个Session对象,用于存放数据,在创建Session对象的同时,服务器将会为该Session对象产生一个唯一编号,这个编号称之为SessionID;

服务器以Cookie的方式将SessionID存放在客户端,当浏览器再次访问该服务器时,会将SessionID作为Cookie信息带到服务器,服务器可以通过该SessionID检索到以前的Session对象,并对其进行访问;

isNew(),setMaxInactiovInterval(秒),invalidate();

Session对象是某个Servlet调用HttpServletRequest.getSession()这样的语句时才被创建;

如果你不想创建一个新的会话,可以调用getSession(false),这样要么得到null,要么得到一个已经有的HttpSession;

Session对象是保存在服务器端,浏览器关闭时并不意味着Session对象被删除;

Session销毁的三种情况:

  • Session的最大不活动间隔时间超时;
  • 服务器关闭;
  • Session.invalidate()手动强制关闭Session

5、  应当尽量使用维护时间段的域对象,或者在不使用后利用removeAttribute()方法销毁绑定的对象;

6、  当Cookie不能工作时,容器就会求助于URL重写,对HTTP响应中发送的所有URL完成编码;显示使用了URL编码后,容器会首先尝试使用Cookie完成会话管理,只有当Cookie方法失败时才会使用URL重写;在向客户返回第一个响应时,会同时尝试设置Cookie和URL重写两种做法。

7、  URL重写是容器自动完成的,但需要我们对URL进行编码才有效

《Java核心技术》、《Java编程思想》、

JavaWeb chapeter 5 Web应用程序状态管理的更多相关文章

  1. 第五章 Web应用程序状态管理

      状态管理概述 Cookie Session URL重写   状态管理概述: HTTP协议使用的是无状态的连接 对容器而言,每一个请求都来自于一个新的客户 这里我们有四种方法来解决这个状态: a:表 ...

  2. Web应用程序状态管理(上)

    一:概述Http协议使用的是无状态连接:客户浏览器与服务器建立连接-发出请求-得到 响应-关闭连接.话句话说,连接只针对一个请求/响应.由于连接不会持久保留 所以容器认不出做第二个请求的客户与做前一个 ...

  3. Web端权限管理新增实用功能:批量增加操作,简单方便快速!

    扩展了吉日嘎拉的Web端权限管理功能后,每次添加菜单倒没啥问题,毕竟菜单的数量有限,可是每增加一个模块.功能或者说权限控制点,就得针对各种常规操作,新增很多遍. 浪费时间,还容易出错.新增了一个字典表 ...

  4. 分享一个web应用程序池管理工具

    因为项目在联调阶段由于各种各样的原因需要重启应用程序池,而调试服务器基本都需要远登操作.同样的情况也会发生在线上,如果公司权限控制得比较严格,每次都要多部门的服务器权限申请的话有点麻烦, 所以抽点时间 ...

  5. 基于Web的IIS管理工具

    Servant:基于Web的IIS管理工具   Servant for IIS是个管理IIS的简单.自动化的Web管理工具.安装Servant的过程很简单,只要双击批处理文件Install Serva ...

  6. JavaWeb项目中web.xml有关servlet的基本配置

    JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...

  7. 使用TreeDMS进行MySQL数据库的Web页面远程管理

    在互联网应用蓬勃发展的时代背景下,各种各样的网络平台,网络应用,移动应用层出不穷,那么这些应用及平台都需要使用到数据库.如何高效的对数据进行日常维护.管理.监控成为迫切需要解决的问题. 基于web的方 ...

  8. 给ambari集群里的kafka安装基于web的kafka管理工具Kafka-manager(图文详解)

    不多说,直接上干货! 参考博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口 ...

  9. 基于Web的Kafka管理器工具之Kafka-manager启动时出现Exception in thread "main" java.lang.UnsupportedClassVersionError错误解决办法(图文详解)

    不多说,直接上干货! 前期博客 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8.0.9和0.10以后版本)(图文详解)   问题详情 我在Kaf ...

随机推荐

  1. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. 循环编辑文件夹IBMEmptorisSSM-WSDL 下面的所有的wsdl文件到 d盘的wsdlSource下

    @echo off cd C:\Program Files\Java\jdk1.6.0_45\binfor /R "D:\wqcCode\company\emtproj\02 Require ...

  3. JS获取当前时间并把时间赋给input表单

    <script>window.onload = function(){ function getDate(){ debugger; var today = new Date(); var ...

  4. 关于IP地址的一个细节问题

    使用ip2long()和long2ip()函数把IP地址转成整型存放进数据库而非字符型.这几乎能降低1/4的存储空间.同时可以很容易对地址进行排序和快速查找;

  5. 移动前端中viewport(视口) 转

    移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dpi ( device-independent pixel 设备逻辑像素 )和 CSS 像素之间 ...

  6. 批处理命令——set

    [1]set命令简介 set,设置. [2]set命令使用 1. 打印系统环境变量.set命令可以打印系统所有的环境变量信息. 应用示例:新建文本文件,命名为set_sys,修改文件类型为bat,用N ...

  7. redis入侵

    一.前言 前段时间,在做内网影响程度评估的时候写了扫描利用小脚本,扫描后统计发现,内网中60%开放了redis6379端口的主机处于可以被利用的危险状态,因为都是一些默认配置造成的考虑到本社区大部分开 ...

  8. 用代码来理解 C#委托与事件

    C#中委托是什么?事件是委托吗? 1.委托是讲方法作为参数代入另一个方法中, 委托可以理解为指向一个函数的引用. class Program { public delegate void Delega ...

  9. android常见问题

    1.广播接收器中启动Activity,需要在intent中添加FLAG_ACTIVITY_NEW_TASK /** * Demo描述: * 在BroadcastReceiver中启动Activity的 ...

  10. /var/spool/postfix/maildrop 占用inode索引及磁盘空间解决办法

    1.问题表现和检查 运行df -i / 查看inode使用是否满: 2.查看/var/spool/postfix/maildrop是否有非常多的小文件,ls直接卡死等情况 解决: 删除小文件: cd ...