cookie,seesion学习

一,为什么需要cookie和session?

1,Web应用程序是使用HTTP协议传输数据的。然而HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。所以要跟踪该会话,必须引入一种机制。

2,Cookie和 Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决 HTTP无状态的问题

二,cookie实现:

1,cookie实际上是由 Web 服务器保存在用户浏览器上的小文本文件

2,客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来(用小文本文件将资料记录下来)。

3,当浏览器再请求同一个网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

实现和查看代码:

Cookie类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Http;
using System.Web;

namespace Common
{
    public class Cookie
    {
        /// <summary>
        /// 无设置时间的cookie,如不设置时间,cookie的有效期为浏览器关闭的时候自动失效
        /// </summary>
        /// <param name="CookieName">标识</param>
        /// <param name="CookieValue">值</param>
        /// <returns></returns>
        public bool setCookieNoTime(string CookieName, string CookieValue)
        {
            try
            {
                HttpCookie cookie = new HttpCookie(CookieName);
                //cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
                cookie.Value = CookieValue;
                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// Cookies赋值
        /// </summary>
        /// <param name="CookieName">标识</param>
        /// <param name="CookieValue">值</param>
        /// <param name="CookieDay">有效天数</param>
        /// <returns></returns>
        public bool setCookie(string CookieName, string CookieValue, int CookieDay)
        {
            try
            {
                HttpCookie cookie = new HttpCookie(CookieName);
                //cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
                cookie.Expires = DateTime.Now.AddDays(CookieDay);
                cookie.Value = CookieValue;
                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// 读取Cookies
        /// </summary>
        /// <param name="CookieName">标识</param>
        /// <returns></returns>
        public string getCookie(string CookieName)
        {
            HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies[CookieName];
            if (cookie != null)
            {
                return cookie.Value.ToString();
            }
            else
            {
                return null;
            }
        }

        /// <summary>
        /// 删除Cookies
        /// </summary>
        /// <param name="CookieName">标识</param>
        /// <returns></returns>
        public bool delCookie(string CookieName)
        {
            try
            {
                HttpCookie cookie = new HttpCookie(CookieName);
                //cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com
                cookie.Expires = DateTime.Now.AddDays(-1);
                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

实现页面:

            Cookie c = new Cookie();
            c.delCookie("123");
            c.setCookieNoTime("no","no");
            c.setCookie("999", "999", 999);
<script type="text/javascript">
    window.onload = function () {
        //alert(document.cookie);
        document.getElementById("cookie").innerHTML = document.cookie;
    }
</script>
<div id="cookie">
</div>

以上方法可以在页面输出浏览器的Cookie,也正是这个原因cookie的使用时不安全的,所以在使用cookie的情况下一般会有以下几种方式:

1,设置到密码时都需要加入时间戳加密,以至于每次密文都不一样

2,客户端请求时,每次或定时更新 Cookie 内容

3,每次向 Cookie 写入时间戳,数据库需要记录最后一次时间戳

4,客户端提交 Cookie 时,先解密然后校验时间戳,时间戳若小于数据数据库中记录,即意味发生攻击。

三,session的实现:

1,Session对象是在客户端第一次请求服务器的时候创建并且当session第一次被启用时,一个唯一的标识被存储于本地的cookie中。(也就是session保存在服务器中,而不是客户端)

2,Session保存在服务器端。为了获得更高的存取速度,服务器把Session放在内存里。每个客户端都会有一个独立的Session。如果Session内容过于复杂,当大量客户访问服务器时可能会导致内存溢出。

3,Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。客户端每访问服务器一次,无论是否读写Session,服务器都认为该用户的Session“活跃(active)”了一次。
4,由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

5,新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。而在同一个客户端的不同浏览器之间打开同一个网站也会在服务器有各自不同的session

储存代码:

Session["lable"] = "456";

使用session代码:

 string str = Session["lable"].ToString();
时间: 2024-07-29 05:41:24

cookie,seesion学习的相关文章

cookie的学习笔记三(做俩个小练习);

第一次访问: 1:获取当前时间,显示到浏览器中. 2:创建cookie对象,时间作为cookie的值名为:lastTime 3:把cookie发送到浏览器保存 第n次访问: 1:获取cookie的数据,取出名为lastTime的cookie 2:得到cookie的值(上次访问的时间) 3:显示上次访问时间到浏览器中 4: 更新名为lastTime 的cookie 值设置为当前时间 5:把更新后的cookie发送到浏览器保存 根据上面 做个 列子: 先区分 上面是第一次访问:什么是 第n次访问 这

JavaWeb 后端 &lt;四&gt; 之 Cookie HttpSession 学习笔记

一.会话管理概述 1.什么是会话? 好比一次通话.打开浏览器,点击多次链接(发出多次请求和收到多次的响应),关闭浏览器,这个过程就是一次会话. 2.解决的问题是什么? 共享多次请求中产生的数据.比如购物车. 二.客户端技术:Cookie 0.HTTP协议的消息头 请求消息头:Cookie 客户端向服务器端传递信息 响应消息头:Set-Cookie 服务器端向客户端传递信息 1.Cookie详解: l  属性: name:Cookie的名称,必要的属性 value:Cookie的取值(不能为中文)

Cookie seesion 赋值

后台赋值: Session["uid"] = userid;//后台 后台取值: Label1.Text = Session["userid"].ToString(); //1.前台 赋值 document.cookie = 'caller=' + Caller;// cookie保存一个值 //2.接收值 var caller = document.cookie; caller = caller.split("=")[1];//根据指定字符拆分

cookie的学习

在计算机术语中,会话是指一个终端用户与交互系统进行通讯的过程.会话是由一组请求与响应组成,请求和响应之间都会有一定的数据传输,然而http协议是一种无状态协议,无状态指的每一次的会话之间是独立的,不同的请求之间无法传递数据,此时就需要这样一种技术来进行请求间的数据传输,而cookie就是这样一种会话状态跟踪技术. cookie是1993年由网景公司(Netscape)发明的一种网络会话状态跟踪技术. cookie是由服务器生成,保存在客户端的一种信息载体,里面存放着用户访问站点的会话状态信息,只

【JAVAWEB学习笔记】16_session&amp;cookie

会话技术Cookie&Session 学习目标 案例一.记录用户的上次访问时间---cookie 案例二.实现验证码的校验----session 一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪     里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并   不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器    记住客户端状态(区分客户端) 2.会话技术 从打开一个浏览器访问某

Cookie学习笔记二:Cookie实例

今天说说刚刚学到的两个Cookie的最经典应用:自动登录和购物车设置 一:自动登录 需要两个页面:login.jsp与index.jsp,login.jsp用来输出登录信息,index.jsp处理登录信息:如果有Cookie,则自动登录,否则创建输入信息的对象的Cookie,下次登录可以直接登录,但是我们在这里给Cookie设置一个最大保存时间30s,即登录30s后会自动退回到登陆页面,具体代码如下: login.jsp: <%@ page language="java" con

【JAVAWEB学习笔记】16

会话技术Cookie&Session 学习目标 案例一.记录用户的上次访问时间---cookie 案例二.实现验证码的校验----session 一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪     里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并   不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器    记住客户端状态(区分客户端) 2.会话技术 从打开一个浏览器访问某

jQuery插件之Cookie插件使用方法~

一.介绍 1-1.jQuery.Cookie.js插件是一个轻量级的Cookie管理插件.下载地址:jQuery-cookie.js  有需要的朋友,右键另存为即可! 二.使用方法 2-1.引入jQuery及jQuery.Cookie.js插件. <script src="jQuery.x.x.x.js" type="text/javascript"></script> <script src="jquery.cookie.j

localStorage的学习与总结

一.locaLStorage :window对象上定义的一个属性,这个属性是Storage对象. 一个持久化关联数组,数组使用字符串来索引,存储的值也是字符串形式的.HTML5 使用 JavaScript 来存储和访问数据. localStroage存储的数据是永久性的,除非WEB应用可以删除存储的数据,或者用户通过设置浏览器设置来删除,否则数据一致保留在用户的电脑上.localStorage的作用域是限定在文档源级别的(文档源是通过协议,主机名以及端口三者来确定的,只要其中一个不同,就说明是不