ASP一共内建了7个对象,有Session、Application、Cookie、Response、Request、Server,这些对象都可以直接使用。

1. 什么是 Cookie?

  1. cookie是一种能够让网站服务器把少量数据(4kb左右)存储到客户端的硬盘或内存,并且读可以取出来的一种技术。

  2. 当你浏览某网站时,由web服务器放置于你硬盘上的一个非常小的文本文件,它可以记录你的用户id、浏览过的网页或者停留的时间等网站想要你保存的信息。当你再次通过浏览器访问该网站时,浏览器会自动将属于该网站的cookie发送到服务器去,服务器通过读取cookie,得知你的相关信息,就可以做出相应的动作。比如,显示欢迎你的小标题,不用填写帐号密码直接登录等。

  3. 不同的浏览器存储的cooks位置是也不一样的。cookie文件的信息是不安全的,所以cookie里面的数据最好加密。

  4. 浏览器保存cookie数据有2中形式: 浏览器的内存中,浏览器所在的电脑硬盘中。如果不指定过期时间,那么存储在客户端浏览器内存中,如果指定了过期时间,那么存储在客户端的磁盘上。

2. Cookie的创建和读取

  下面的例子可以在Cookie文件中写入键值对为id:234的信息。它是不安全的,所以最好不要将重要信息放在Cookie中,如果想存放在Cookie中,最好加密使用。

  使用Response 命令可以将Cookie写入访问者的计算机;使用 Request 命令可以从访问者的计算机中取回cookie

//Create
HttpCookie cookie = new HttpCookie("id","234"); //创建cookie的实例。
cookie.Expires = DateTime.Now.AddMonths(5);//设置cookie的过期时间,5个月过期
Response.Cookies.Add(cookie);//将创建的cookie文件输入到浏览器端 //Read
Response.Write(Request.Cookies["id"].Value); //读取cookie文件中存储的值

3. 什么是Session?

  Session中文是“会话”的意思,在ASP.NET中代表了服务器与客户端之间的“会话”。

  系统为每个访问者都设立一个独立的Session对象,用以存储Session变量,并且各个访问者的Session对象互不干扰。简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,服务器将SessionID当做cookie存储在用户的浏览器中, 这样就能正确返回信息。客户端只负责保存相应网站的SessionID,而其他的Session信息则保存在服务器端。

  这个唯一的SessionID是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的SessionID自动附加在HTTP头信息中,(这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给SessionID所对应的用户。

  Session与Cookie是紧密相关的。 Session的使用要求用户浏览器必须支持Cookie,如果浏览器不支持使用Cookie,或者设置为禁用Cookie,那么将不能使用Session。

4. Session的读取和写入

  由于Session对象是ASP的内置对象,所以Session直接使用就可以了。

            //写入
Session["UserName"] = "joye888"; //读取
var userName = Session["UserName"].ToString();
Response.Write(userName); //遍历
IEnumerator sessionEnum = Session.Keys.GetEnumerator();
while (sessionEnum.MoveNext())
{
Response.Write(Session[sessionEnum.Current.ToString()].ToString() + " ");
} //销毁
Session.Abandon(); //结束会话
Session.Clear();//不结束会话

5. 通过Web.config配置Session的存放位置及形式

<system.web>
  <sessionState mode="Off|InProc|StateServer|SQLServer"
    cookieless="true|false"
    timeout="number of minutes"
    stateConnectionString="tcpip=server:port"
    sqlConnectionString="sql connection string"
    stateNetworkTimeout="number of seconds"
  />
</system.web>

  mode:设置将Session信息存储到哪里

  Off:不使用Session功能;

   InProc :将Session存储在IIS进程内,这是默认值,也最常用(优点是简单,性能最高。但是当重启IIS服务器时Session丢失。);

  StateServer :将Session存储在ASP.NET状态服务进程中(重新启动Web应用程序时保留会话状态,并使会话状态可以用于网络中的多个Web服务器。);

  SQLServer :将Session存储在SQL Server中(存储在内存和磁盘中,服务器挂掉重启后都还在)。

  cookieless:设置客户端的Session信息存储到哪里

  ture 使用Cookieless模式;这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。

  false 使用Cookie模式,这是默认值。

  timeout 设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟。

  stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号

    例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer时,这个属性是必需的。(默认端口42424)。

  sqlConnectionString 设置与SQL Server连接时的连接字符串。

    例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=joye"。当mode的值是SQLServer时,这个属性是必需的。

  stateNetworkTimeout 设置当使用StateServer模式存储Session状态时,经过x秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。

6. Session和Cookie的区别

  1、cookie存客户端,session存服务端。

  2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。

  3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

  4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

7. 什么是Application?

  Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象,它是一个全局的。Application的自我管理功能非常薄弱,它没有类似Session的超时机制。也就是说,Application中的数据只有通过手动删除或者修改才能释放内存,只要应用程序不停止,Application中的内容就不会消失。

8. Application的读写  

Application["count"] = 0; //直接赋值
Application["count"] = (int)Application["count"] + 1; //直接取值

了解ASP(三) -- Cookie, Session, Application的更多相关文章

  1. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  2. c# Cookie,Session,Application,Cache 四种缓存使用情景

    好记性不如烂笔头,记录一下C#缓存使用的情景模式....个人理解,不正之处,欢迎指正 讨论 Cookie,Session,Application,Cache 四种,有的缓存情景对人,有的缓存情景对事儿 ...

  3. JavaWeb -cookie&session&application

    cookie&session&application总结 Cookie[key-value](不是内置对象必须new): 1. Cookie 是由服务端生成的,在发送给客户端保存 2. ...

  4. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法

    转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...

  5. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  6. Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)

    1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...

  7. request,response,session,cookie,application

    A:request 客服端向服务器端请求 JAVA讲究封装,所以Request也是某个东西的封装,到底是什么东西呢? 按字面意思:请求! 从Http协议说起,当你发一个请求到服务端的时候,你会把一些信 ...

  8. asp.net cookie and session

    客户端只保存session id,信息存在服务端 Session状态应该存储在两个地方,分别是客户端和服务器端. 客户端只负责保存相应网站的SessionID,而其他的Session信息则保存在服务器 ...

  9. Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

    1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...

  10. Python自动化运维 - Django(三)CSRF - Cookie&Session

    CSRF跨站请求伪造 CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求 ...

随机推荐

  1. 计算1+2!+3!+...+n!的和

    计算1+2!+3!+...+n!的和 Code 点击查看代码 #include<iostream> #include<vector> using namespace std; ...

  2. Java基础篇——JVM初步

    1.JVM的位置 2.JVM体系结构 3.类加载器 虚拟机加载器(java) 启动类(根)加载器(C++) 扩展类加载器(java)↑ 应用程序加载器(java)↑ 4.双亲委派机制 类加载器收到类加 ...

  3. 10.关于synchronized的一切,我都写在这里了

    大家好,我是王有志.关注王有志,一起聊技术,聊游戏,从北漂生活谈到国际风云. 之前我们已经通过3篇文章由浅到深的分析了synchronized的用法和原理: synchronized的基础:synch ...

  4. Golang如何实现节假日不打扰用户?

    ​ 1.场景 想象下以下场景,嘿嘿...! 一个iphone用户,闹钟是可以按节假日不响的! 每日新闻机器人,节假日是可以不打扰我的! 我的业务,节假日是可以... 2.思路 要实现识别节假日,大概有 ...

  5. Unity_UIWidgets - 按钮组件IconButton

    Unity_UIWidgets - 按钮组件IconButton 按钮组件IconButton IconButton 结尾 QQ 今日无推荐 按钮组件IconButton 既然上周给大家介绍了ICON ...

  6. Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink

    ARMmbed / DAPLink 项目 仓库地址 https://github.com/ARMmbed/DAPLink Arm Mbed 应该属于Arm的机构或者是Arm资助的机构. 常用的 DAP ...

  7. k8s部署canal-1.1.6版本实现MySQL数据库数据同步

    1.版本说明 软件&镜像 版本&镜像信息 说明 Kubernetes v1.23.7 k8s服务器 Kuboard v3.5.2.0 k8s连接管理工具 Canal v1.1.6 数据 ...

  8. 二、typora软件的安装与markdown语法

    目录 一.typora软件的安装与使用 1.软件的安装 2.破解使用的方法 3.功能描述(markdown语法讲解) 标题 小标题 语言环境 表格 表情 图片 查看源代码 数学公式 流程图 高亮文本 ...

  9. 编写antd的Cascader 级联选择组件市级地区数据

    下面是该组件的使用数据的格式 options: [ { value: 'zhejiang', label: 'Zhejiang', children: [ { value: 'hangzhou', l ...

  10. Python 元组列表排序:初学者可能忽视的细节

    P1085 [NOIP2004 普及组] 不高兴的津津 题目描述 津津上初中了.妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班.另外每周妈妈还会送她去学习朗诵.舞 ...