zoukankan      html  css  js  c++  java
  • Cookies

    1.HTTP 协议无状态协议,无法识别来自于同一个请求的识别,作为WEB服务器,必须采用一种机制唯一标识一个用户

    2.会话:WEB和客户端之间一系列的请求和响应过程,Servlet规范中,常用两种机制完成会话跟踪:Cookies和Seesion

      1.问题一:WEb服务器如何知道请求消息来自同一个客户端:

            需要浏览器对其发生的每一个请求消息进行标识,同一个会话的请求消息有相同的标识(Seesion ID)

    3.Cookie机制:客户端保持HTTP状态信息方案,

      2).简单的GET请求,在响应信息头中发现了Cookie,再一次请求过程中发现了自动的加入SetCookie,还有第一次请求时候没有Cookie头,再一次访问浏览器自动加入Cookie

     

     1// 简单的Cookie表示  
     2              //获取Cookies
     3              Cookie []cookies=request.getCookies();
     4              if(cookies!=null && cookies.length>0)
     5              {
     6                  for(Cookie cook:cookies)
     7                  {
     8                      out.print(cook.getName()+":"+cook.getValue());
     9                      out.print("<br>");
    10                  }
    11              }
    12              else
    13              {
    14                  out.print("没有一个cookie,创建一个cookie,并且返回");
    15                  Cookie cookie=new Cookie("name","jerry");
    16                  response.addCookie(cookie);
    17              }

    3).会话级别Cookie,默认情况没有设置setMaxAge时候,用户退出浏览器会自动的删除cookie;0时候表示快速被删除

      会话Cookie和持久Cookie区别:


     5.使用Cookie进行自动登录设置

       1.获取登录参数信息,并且把登录信息存储到cookie中设置最大时效30S

        2.从cookie读取用户信息,并且打印欢迎信息

      3.没有请求参数和登录信息重定向到login.jsp

    6.利用cookies 显示最近需要看过的东西

        最重要是在删除部分 ;第一种情况是 数量大于5并且新加入的书籍并没有出现过删除第一个Cookie进行,第二种情形:Update更新,加入书籍存在于原来的Cookies数组,现在讲原有删除,在末尾加入现有的书籍,相当于将原来位置移动到末尾。

     1     // 1. 确定被删除的Cookie是哪个---前提是ATUG_Book开头的Cookie,m每添加一件商品会在cookies数组中增加一条Cookie
     2                 // 所有getCookies是一个数组
     3                  String book=request.getParameter("book");   
     4                 
     5                  List<Cookie> list=new ArrayList<Cookie>();
     6                  
     7                  Cookie tempCook=null;
     8                  Cookie [] cookies=request.getCookies();
     9                 if(cookies!=null && cookies.length>0)
    10                 {
    11                     for(Cookie bcookie:cookies)
    12                     {
    13                         String bookName=bcookie.getName();
    14                         if(bookName.startsWith("ATUG_Book"))
    15                         {
    16                             list.add(bcookie);
    17                             
    18                             if(bcookie.getValue().equals(book))
    19                             {//判断book是否已经存入原来的Cookie中
    20                                 tempCook=bcookie;
    21                             }
    22                         }
    23                     }
    24                 }
    25                 
    26                 // 删除第一种情形,删除数量大于5并且之前记录中没有出现的
    27                 if(list.size()>=5 && tempCook==null)
    28                 {
    29                     tempCook=list.get(0);
    30                 }
    31                 
    32                 // 删除第二种情形:并且之前出现过相当于更新
    33                 if(tempCook!=null )
    34                 {
    35                     tempCook.setMaxAge(0);
    36                     response.addCookie(tempCook);
    37                 }
    38                 // 2.将从books传入的的book更新完了之后作为一个新的cookie 返回
    39             
    40                 Cookie cookie=new Cookie("ATUG_Book"+book,book);
    41                 response.addCookie(cookie);

       


    CookiePath:只能作用于当前目录和其子目录,不能作用于其上一级目录

    向作用上一级目录使用setPath(request.getContextPath()--等于当前项目目录(/TomCat))

           / 表示当前站点根目录,

  • 相关阅读:
    程序员为什么难管理?
    Python多继承
    如何从程序员走向管理层?
    为什么Python能超越JAVA,有什么优势?
    HTTP协议简介与在python中的使用详解
    人力资源管理书籍推荐,这本书HR必看
    把市面上的书翻了个遍,找到这五本经典营销管理书籍推荐给大家
    服务器部署之 cap deploy:setup
    【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
    【转】C/C++字节对齐算法
  • 原文地址:https://www.cnblogs.com/woainifanfan/p/6683938.html
Copyright © 2011-2022 走看看