一、Cookie:

Cookie主要存储一些不敏感的数据,只能存储字符串类型

执行过程:
(1)第一次请求:
客户端将数据(比如用户名)以请求报文的形式请求服务器端响应,
服务器端得到数据(用户名),
如果登录成功则用Cookie保存在客户端上,Cookie创建并赋值如下:

HttpCookie cookie = new HttpCookie("键","值");
Response.Cookies.Add(cookie);

也可以通过浏览器发过来的请求报文来获得Cookie对象:

HttpCookie Cookie = context.Request.Cookies[Kits.ID];

(2)第二次请求:
这样就可以满足需求,当用户再次请求页面时,就可以对用户Cookie的判断,
来预先填充一些数据。

Cookie的取值代码如下:

Request.Cookies["键"].Value.ToString();

Cookie 可以设置过期的时间(设置Cookie为硬盘Cookie):

cookie.Expires = DateTime.Now.AddHours();

判断Cookie是否存在(判断获得的Cookie对象是否为空)

if(Request.Cookie["键"]==null){ }

二、Session:

要实现Session功能,必须实现System.Web.SessionState.IRequiresSessionState 标记接口

Session的存在也是为了免去用户重复性的去输入一些数据,
不同的是Session可以存储一些数据敏感的数据(Pwd,密码),可以是任意类型的,
这样就可以实现免登陆(用户登录一次之后,如果不退出浏览器,第二次可直接进入主页),

执行过程:
(1)第一次请求
浏览器将数据通过请求报文的形式,请求服务器端响应,
服务器判断用户名密码是否正确,

正确之后,用Session保存数据,代码如下:
存值,Session是以键值对形式存储的:

context.Session["键"]="值";

这一步是服务器端自动完成的,服务器会把Session存到Session池中,
Session池中对象的键(ASP.NET_SessionId)是随机生成的,
Session池中的值就是刚才存储的Session键值对,context.Session["Pwd"],

将ASP.NET_SessionId以Cookie形式返回,返回的Cookie是以缓存保存在浏览器端,

(2)第二次请求
在第一次请求后,浏览器已经获得了一个ASP.NET_SessionId,
在第二次请求时,会将ASP.NET_SessionId带到请求报文头中,
这样在执行aspx页面的管道事件的第9到第11个事件时,根据ASP.NET_SessionId
找到Session池中对应的Session对象,并将这个对象赋值给上下文对象context中。

Session的取值代码如下:

Context.Session["键"].ToString();

将Session清除的代码如下:

Context.Session.Abandon();

判断Session是否存在Session(判断获得的Session对象是否为空)

if(Context.Session["键"]==null){ }

三、可以使用Cookie与Session的组合来一些功能

(1)需求:用户登录一次页面成功之后,以后再登录其他页面时可以不用通过登录页面,
前提是只要不退出浏览器,一旦退出浏览器,用户需重新通过登录页面

这是通过Session来实现

登录成功后将查找到的用户名存到Session中:

context.Session["键"]="值";

以后每个页面首先判断Session是否存在:

if(Context.Session["键"]==null){ }

(2)需求:实现用户的7天免登录,

这是通过Session 与Cookie组合完成的

登录成功后将查找到的用户名存到Session中:

context.Session["键"]="值";

如果用户选择了免登录,因为Cookie不能存储用户敏感数据,
用Cookie记录当前用户的ID,并设置过期时间为7天,

HttpCookie cookie = new HttpCookie("键","值");
cookie.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(cookie);

以后在判断完Session是否存在后,再判断用户 ID的Cookie是否存在,
如果Cookie存在,则取出ID,并在数据库中查找用户名赋值给Session,

stringID= Request.Cookies["键"].Value.ToString();
然后查询出用户名,
context.Session["键"] = "用户名";

(3)需求:登录成功之后,在每个页面上显示用户名

通过Session实现
在aspx前台页面上如下代码:

<%= Session["键"] %>

Cookie与Session的一些总结的更多相关文章

  1. Cookie和Session的总结

    1.开篇 在之前学习这一段的时候我一直有点没弄清楚,其实对Session这块的理解还可以,但是Cookie感觉始终还是欠缺点火候.之后的很长一段时间都基本上很少用Cookie了,渐渐的也淡忘了这一块的 ...

  2. java的会话管理:Cookie和Session

    java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...

  3. Cookie和Session的那些事儿

    Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能.Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每 ...

  4. django的cookie和session以及内置信号、缓存

    cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...

  5. Cookie和Session的区别

    前言 HTTP是一种无状态的协议,为了分辨链接是谁发起的,就需要我们自己去解决这个问题.不然有些情况下即使是同一个网站我们每打开一个页面也都要登录一下.而Session和Cookie就是为解决这个问题 ...

  6. 本地数据Store。Cookie,Session,Cache的理解。Timer类主要用于定时性、周期性任务 的触发。刷新Store,Panel

    本地数据Store var monthStore = Ext.create('Ext.data.Store', { storeId : 'monthStore', autoLoad : false, ...

  7. Cookie与Session

    再说Cookie与Session之前,先要了解一下http协议. 何为http协议: http协议即超文本传输协议,一种基于浏览器请求与服务器响应的协议,该协议主要的特点就是它是一种无状态的协议(只针 ...

  8. 【转】Cookie和Session区别和联系详解

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  9. 理解Cookie和Session机制(转)

    目录[-] Cookie机制 什么是Cookie 记录用户访问次数 Cookie的不可跨域名性 Unicode编码:保存中文 BASE64编码:保存二进制图片 设置Cookie的所有属性 Cookie ...

  10. cookie 和session 的区别详解

    这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择, 都纪 ...

随机推荐

  1. 移动应用(手机应用)开发IM聊天程序解决方案

    这个解决方法已经定制下来很久了,上一段时间比较忙,没有时间整这些东西.最近稍微好些,不怎么加班.所以抽空总结下,同时也分享给大家,也算是给大家一个借鉴吧!或许这并不是最好的解决方案,但只要能满足当前需 ...

  2. Maven pom.xml 配置详解

    http://niuzhenxin.iteye.com/blog/2042102 http://blog.csdn.net/u012562943/article/details/51690744 po ...

  3. StrictMode对SharedPreferences的检查出来的IO操作

    在使用StrictMode时,发现会爆出 StrictMode policy violation;~duration=1949 ms: android.os.StrictMode$StrictMode ...

  4. 在内核中增加对yaffs文件系统的支持

    自己最近在搞一些内核以及根文件系统的移植,就涉及到了需要在内核中增加对yaffs文件系统的支持.在网上找了一些文档后,自己将具体的操作过程做了一个总结,方便以后查询使用: 1.获取yaffs源码 YA ...

  5. hibernate常见错误

    1.Hibernate: Could not synchronize database state with session 1.主键不是自动生成的,然后自己没手动设置.  2.插入的实体字段跟数据库 ...

  6. js判断汉字字数

    js判断汉字字数的东东 //**************************************************************** //* 名 称:DataLength // ...

  7. 使用C#调用windows API入门

    一:入门,直接从 C# 调用 DLL 导出   其实我们的议题应该叫做C#如何直接调用非托管代码,通常有2种方法: 1.  直接调用从 DLL 导出的函数. 2.  调用 COM 对象上的接口方法 我 ...

  8. vb 随机获取6个1-33的数

    Private Sub random(ByVal num As Integer, ByVal min As Integer, ByVal max As Integer) Dim i As Intege ...

  9. TCP/IP详解学习笔记(6)-- IP选路

    1.概述      路由算法是用于获取路由表中的路由项目.它是路由选择协议的核心. 2.路由算法的分类      从路由算法能否随网络的通信量或拓扑自适应的进行调整变化来分,可以分为两类. 静态路由选 ...

  10. 安装Ecshop首页出现报错:Only variables should be passed by referen

    出现下面这就话: Strict Standards: Only variables should be passed by reference in E:\Tools\ECShop_V2.7.3_UT ...