JavaWeb chapeter 5 Web应用程序状态管理

Posted littlejava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb chapeter 5 Web应用程序状态管理相关的知识,希望对你有一定的参考价值。

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应用程序状态管理的主要内容,如果未能解决你的问题,请参考以下文章

web应用的配置描述符--web.xml文件

Spring实战5-基于Spring构建Web应用

javaweb的监听器导致服务停止运行

Java遇见HTML——JSP篇之JavaWeb简介

JavaWeb第一个 WEB 应用程序

如何通过 Gradle 将 ojdbc7 添加到 Java Web 应用程序?