1.Cookie

会话跟踪技术

      可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。 
      在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。 

      在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下: 
           请求银行主页; 

                  请求登录(请求参数是用户名和密码);
                  请求转账(请求参数与转账相关的数据); 
                  请求信誉卡还款(请求参数与还款相关的数据)。  
      在这上会话中当前用户信息必须在这个会话中共享的,因为登录的是张三,那么在转账和还款时一定是相对张三的转账和还款!这就说明我们必须在一个会话过程中有共享数据的能力。

会话路径技术使用Cookie或session完成 
      我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术
cookie
      总结:
          针对每一个服务器浏览器都会保存一个key-value结构的类似于{}
            服务端操作cookie
            obj=HttpResponse("OK")
            obj=render("")
            obj=redirect("")
            
            # 设置cookie
             obj.set_cookie("key","value",max_age="")
             obj.set_signed_cookie(key,value,salt='加密盐',...)
            
            # 获取cookie
             request.COOKIES.get()
             request.COOKIES['key']
             request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
            #
             obj.delete_cookie("cookie_key",path="/",domain=name)
                       
             客户端浏览器操作cookie
                        $.cookie('the_cookie'); // 获得cookie
                        $.cookie('the_cookie', 'the_value'); // 设置cookie
                        $.cookie('the_cookie', 'the_value', { expires: 7 }); //设置带时间的cookie
                        $.cookie('the_cookie', '', { expires: -1 }); // 删除
                        $.cookie('the_cookie', null); // 删除 cookie
                        $.cookie('the_cookie', 'the_value', {expires: 7, path: '/', domain: 'jquery.com', secure: true});//新建一个cookie 包括有效期 路径 域名等


session
         # 设置session  
                request.session["username"]="user"            
   
         # 取出session
                request.session.get("username")
            
         # 删除session
                del request.session["username"]
          
                # request.session.clear()
                # request.session.flush()
cookie session

相关文章: