码迷,mamicode.com
首页 > 其他好文 > 详细

状态管理-Cookie

时间:2015-08-08 19:48:10      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

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只能保存字符串

状态管理-Cookie

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4713643.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!