状态管理-Cookie

1.为什么需要状态管理

  Web应用程序使用HTTP协议通信,而HTTP协议是“无状态”协议,即服务器一旦响应完客户的请求之后,就断开连接,而同一个客户的下一次请求将重新建立网络连接

  服务器应用程序有时是需要判断是否为同一客户发出的请求,比如客户的多次选购商品。因此,有必要跟踪同一客户发出的一系列请求。

2.什么是状态管理

  将客户端(浏览器)与服务器之间多次交互(一次请求,一次响应)当做一个整体来看待,并且将多次交互所涉及的数据即状态保存下来

  状态指的是数据

  管理指的是多次交互时对数据的修改

3.状态管理的两种常见模式

  客户端状态管理技术:将状态保存在客户端。代表性的是Cookie技术

  服务器状态管理技术:将状态保存在服务器端。代表性的是Session技术

4.什么是Cookie

  浏览器向Web服务器发送请求时,服务器会将少量的数据以set-Cookie消息头的方式发送给浏览器,浏览器将这些数据保存下来;

  当浏览器再次访问服务器时,会将这些数据以Cookie消息头的方式发送给服务器

5.如何创建Cookie

  Servlet API为使用Cookie提供了javax.servlet.http.Cookie

  创建:

    Cookie c=new Cookie(String name,String value);

    response.addCookie(c);

  name:用于区分不同Cookie的名字

  value:Cookie的值

6.如何查询Cookie

  获取客户端的所有Cookie对象

    Cookie[] request.getCookies();

    注:该方法有可能返回null

  获取一个Cookie对象的名称或值

    String Cookie.getName();

    String Cookie.getValue();

7.如何修改Cookie

  1.获取客户端发送的所有Cookie

  2.根据name找到要修改的Cookie

  3.调用Cookie的setValue(String newValue)方法修改该Cookie的值

  4.将修改后的Cookie加入到response发送回客户端

  Cookie[] cookies = request.getCookies();

  if(cookies!=null){

    for(Cookie c:cookies){

      String name=c.getName();

      if(name.equals("city"){

        c.setValue("ShangHai");

        response.addCookie(c);

      }

    }

  }

8.Cookie的生存时间

  默认情况下,浏览器会将Cookie保存在内存中,只要浏览器不关闭,Cookie就一直存在

  如果希望关闭浏览器后Cookie仍在,可以通过设置过期时间

    void Cookie.setMaxAge(int seconds);

    注:seconds单位是秒,精度不是很高

  seconds>0:浏览器要保存Cookie的最长时间为设置的参数值,如果超过指定的时间,浏览器会删除这个Cookie。此时Cookie保存在硬盘上

  seconds=0:删除Cookie。在修改Cookie的生存时间为0后,随着response发送回客户端,替换原有Cookie,因生命周期到了即将该Cookie删除。

  seconds<0:缺省值,浏览器会将该Cookie保存到内存中

9.Cookie 编码

  Cookie只能保存合法的ASCII字符。如果保存中文,需要将中文转换成合法的ASCII字符,即编码。

  Cookie c=new Cookie("city",URLEncoder.encode("北京","utf-8"));

10.什么是Cookie的路径问题

  浏览器在访问服务器上的某个地址时,会比较Cookie的路径与该路径是否匹配,只有匹配的Cookie才会发送给服务器

  Cookie的默认路径等于添加这个Cookie的Web组件的路径

  如:/appName/file/addCookie.jsp添加了一个Cookie,则该Cookie的路径等于/appName/file

11.发送Cookie的条件

  要访问的地址必须是Cookie的路径或者其子路径时,浏览器才会发送Cookie

  如:

    Cookie的路径是/appName/file

    则访问/appName/file/a.jsp或/appName/file/b.jsp时会发送Cookie

    如果访问/appName/c.jsp则不会发送Cookie

12.如何设置Cookie的路径

  使用如下代码可以设置Cookie的路径

  Cookie c = new Cookie("uname","Jack");

  c.setPath("/appName");

  response.addCookie(c);

13.Cookie的限制

  Cookie可以被用户禁止

  Cookie会将状态保持在浏览器端,不安全。对于敏感数据,需要加密后再使用Cookie来保存

  Cookie只能保存少量的数据,大约4kb左右

  Cookie的个数是有限制的

  Cookie只能保存字符串

时间: 2024-10-10 02:45:05

状态管理-Cookie的相关文章

状态管理cookie和session

是由php提供的,session开关要放在代码最前面,session是保存在服务器的一般保存20分钟,cookie是保存在客户端的随便给值. 状态管理cookie和session,布布扣,bubuko.com

SERVLETJSP学习(六)—— 状态管理-cookie

1. 状态管理-Cookie 1.1. 状态管理 1.1.1. 为什么需要状态管理 Web应用程序使用HTTP协议作为传输数据的标准协议,而HTTP协议是无状态协议,即一次请求对应一次响应,响应结束后连接即断开,同一个用户的不同请求对于服务器端来讲并不会认为这两个请求有什么关联性,并不会以此区分不同的客户端.但实际情况中还是需要服务器端能够区分不同的客户端以及记录与客户端相关的一些数据,所以状态管理能够做到不同客户端的身份识别. 1.1.2. 什么是状态管理 将客户端与服务器之间多次交互当做一个

[原创]java WEB学习笔记28: 会话与状态管理Cookie 机制

1.会话与状态管理 1)背景 ① HTTP协议是一种无状态的协议,WEB服务器本身不能识别出哪些请求是同一个浏览器发出的 ,浏览器的每一次请求都是完全孤立的: ② 作为 web 服务器,必须能够采用一种机制来唯一地标识一个用户,同时记录该用户的状态: ③ 问题:怎么才能实现网上商店中的购物车呢:某个用户从网站的登录页面登入后,再进入购物页面购物时,负责处理购物请求的服务器程序必须知道处理上一次请求的程序所得到的用户信息. 2)会话和会话状态 ① WEB应用中的会话:指一个客户端浏览器与WEB服务

状态管理cookie 案例

1状态管理:服务器为了追踪同一个客户端发出的请求,将多次交互看成一个整体看待 2:cookie的生存时间,默认情况下,cookie保存在浏览器内存中,只要不关闭浏览器,cookie就一直存在 如果希望关闭浏览器后,cookie仍然存在,可以设置过期时间 3:在写cookie是,为了让浏览器访问到同一应用的cookie,最好设置cookie的默认路径 c.setPath(/day07); 4.1 增加Cookie代码: //创建cookie Cookie c1 = new Cookie("unam

aspx页面状态管理Cookie和ViewState

Cookie 设置cookie protected void Button2_Click(object sender, EventArgs e) { HttpCookie cookie = new HttpCookie("user"); cookie.Value = "这是cookie"; cookie["sex"] = "女"; cookie.Values.Add("age", "18"

JSP | 基础 | JSP状态管理 | Cookie &amp;&amp; Session

Cookie : 是web服务器保存在客户端的一系列文本信息. Cookie的作用: 1.对特定的对象的追踪 2. 3. JSP中创建Cookie以及使用 创建Cookie对象 写入Cookie对象 使用Cookie对象 Cookie在登录应用: 需求: 用户在勾选记住密码后, 1. 保存用户密码24小时,并在另外一个页面上显示通过cookie读取用户的用户名和密码, 2. 在返回登录页面上,自动填充用户名以及密码 注意: 1. 用户名可以为中文字符,需要解决中文字符转码问题 2. 原文地址:h

状态管理之cookie使用及其限制、session会话

# 1.什么是状态管理? 将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来.(cookie浏览器所涉及到的访问数据保存下来)# 2.如何进行状态管理? 方式一 将状态保存在浏览器端(Cookie). 方式二 将状态保存在服务器端(Session). # 3.Cookie## (1)什么是Cookie? 服务器临时存放在浏览器端的少量数据. ## (2)工作原理 当浏览器访问服务器时,服务器将少量数据以set-cookie消息头的形式发送给浏览器,

web应用程序的状态管理

一.Web应用程序状态形式1.表单隐藏字段2.cookie——把用户状态信息通过服务器发送到客户端浏览器中保存3.Session会话跟踪,服务器为客户端创建并维护的用于存放客户状态数据的session对象4.URL地址重写.(一)cookie 1:Cookie原理: 服务器在响应请求时将一些数据以“键-值”对的形式通过响应信息保存在客户端,当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端. Cookie cookie = new Cookie("cool",

HttpClient第三章 HTTP状态管理

原始的HTTP被设置成无状态的面向请求响应的协议,它并没有为基于跨几个逻辑相关的请求/响应交换的有状态会话提供所需的功能.但是随着HTTP协议越来越流行并且被应用,越来越多的系统开始用它作为原本并不是它的作用的功能,例如,电子商务传输应用,这样一来,对于状态管理的支持成为一个必要的功能. 那时网景公司作为一个web客户端和服务器端软件的领导开发者在他们的一个基于特殊的说明的产品里实现了对HTTP状态管理的支持,后来,网景通过发布一个知指导说明书试图标准化这一机制.这些努力促成了通过RFC标准的正