关于session,cookie,Cache
昨天看了《ASP.NET 页面之间传值的几种方式》之后,对session,cookie,Cache有了更近一步的了解,以下是相关的内容
一、Session
1、Session基本操作
a、创建Session
//创建Session
public void createSession(string[] arrStr)
{
//创建数组
string[] str=new string[arrStr.Length];
for (int i = 0; i < arrStr.Length; i++)
{
str[i] = i.ToString();
Session[str[i]] = arrStr[i];
}
}
b、获取Session的值
string getSessionValue=Session["name"].ToString();
c、遍历Session
//遍历Session
public void getSession()
{
IEnumerator sessionEnum = Session.Keys.GetEnumerator();
while (sessionEnum.MoveNext())
{
Response.Write(Session[sessionEnum.Current.ToString()].ToString()+";");
}
}
d、清空Session,但不结束会话
//清空Session,但不结束会话
public void clearSession()
{
Session.Clear();
}
e、结束Session会话
//结束Session会话
public void abandonSession()
{
Session.Abandon();
}
2、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形式和位置;
a、Off:禁用Session;
b、Inproc:In Process缩写,表示将Session存储在IIS进程内,但注意,该种方式虽然性能高,但IIS重启是,丢失Session信息;(默认值)
c、SateServer:将Session存储在ASP.NET状态服务进程中(重新启动Web运用程序时保留会话状态,并使会话状态可以用于网络中的多个Web服务器);
d、将Session存储在SQL Server中
cookieless:设置客户端存储Session形式和位置
a、true:使用cookieless模式,这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储;
b、false:使用kookie模式,默认值。
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状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟;
3、Session原理
为什么引入Session?大家知道,因为http是一种无状态协议,因此,Session正弥补了这一缺陷。当然,Session作用远远不止于这些,这里就不多论述。
Session在ASP.NET中,表示客户端(Goggle,Firefox,IE等)与服务器端的会话,用来存储特定会话信息,准确来说,是用来存储特定用户信息。当客户端向服务器发送一个请求时,如登陆用户ID,服务器接收到该请求,服务器端Session产生一个与该登陆用户相关的SessionID,并将SessioID返回给客户端(Goggle,Firefox,IE等),在新会话开始时,服务器将SessionID当做cookie存储在用户的浏览器中。
总结:
1、定义:System.Web.SessionState.HttpSessionState Page.Session //获取ASP.NET提供的当前Session对象。
2、特性:
a、Session中文意思为“会话”,在ASP.NET中,表示客户端和服务器之间的会话,web中常用会话之一。
b、Session存储在服务器端内存中。
c、Session可以存储任何类型的数据,包括自定义对象。
d、Session与Session间是相互独立的,互不干扰。
e、Session与Cookie配对使用,Session在服务器端产生SessionID,并将该SessionID返回给客户端(IE,FireFox,Google等),客户端Cookie来存储该SessionID,
整过会话过程中,只要保存SessionID的Cookie不丢失,则Session的信息就不会丢失。
f、Session保存的数据可以跨页访问,即跨页面是全局的。
g、Session不能跨进程访问,只能由该会话用户访问。
h、可以在不结束会话的条件下,清除Session信息,即调用Session.Clear();
i、当会话结束,过期,服务器就会清除Session对象。
j、Session常用于保存登录用户的ID.
二、Cache
核心代码:
//Class1 Cache["id"] = TextBox1.Text;
Response.Redirect("~/WebForm1.aspx"); //Class2 if (Cache["id"]!=null)
{
Label1.Text = Cache["id"].ToString();
} //移除缓存
Cache.Remove("id"); //如果 Cache["id"]为空,则传值失败。可使用如下方法实
//限期为10分钟
Cache.Insert("id",TextBox1.Text,null,Cache.NoAbsoluteExpiration,new TimeSpan(0,10,0));
总结:
1、应用程序中的缓存机制用于将需要大量服务器资源来创建的对象存储在内存中,以此大大改进应用程序的性能。这个机制同样可以用来传值。
2、与其他方法不同的是,该方法需要设置缓存项优先级和缓存时间。因为当系统内存缺乏时,缓存机制会自动移除很少使用或优先级较低的项,从而造成传值失败。
3、该方法的优点是传递数据的大小和数量无限制,速度快。缺点是缓存机制的操作相对比较复杂。
三、Cookie
核心代码:
//Class1
HttpCookie httpCookie = new HttpCookie("testCookie","Page transfers by Cookie");
Response.Redirect("~/Class2.aspx");
//Class2
Label1.Text = Request.Cookies["testCookie"].Value;
总结:
1、Cookie用于在用户浏览器上存储小块的信息,保存用户的相关信息,比如用户访问某网站时用户的ID,用户的偏好等,用户下次访问就可以通过检索
获得以前的信息。所以Cookie也可以在页面间传递值。
2、Cookie通过HTTP头在浏览器和服务器之间来回传递的。Cookie只能包含字符串的值,如果想在Cookie存储整数值,那么需要先转换为字符串的形式。
3、与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使
用要配合ASP.NET内置对象Request来使用。
4、使用简单,是保持用户状态的一种非常常用的方法。比如在购物网站中用户跨多个页面表单时可以用它来保持用户状态。
5、常常被人认为用来收集用户隐私而遭到批评。
6、安全性不高,容易伪造。
关于session,cookie,Cache的更多相关文章
- ASP.Net Session, Cookie, Cache的区别
Session—管理用户会话状态 什么是状态管理? 指对同一页或不同页的多个请求维护状态和页信息的过程 为什么要进行状态管理? Web页是无状态的,不保存任何用户请求信息,而且到服务器的每一往返过程都 ...
- 关于缓存中Cookie,Session,Cache的使用
文章来源:http://canann.iteye.com/blog/1941173 以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中C ...
- Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
- Application,Session,Cookie,ViewState和Cache区别
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- Redis+Django(Session,Cookie、Cache)的用户系统
转自 http://www.cnblogs.com/BeginMan/p/3890761.html 一.Django authentication django authentication 提供了一 ...
- c# Cookie,Session,Application,Cache 四种缓存使用情景
好记性不如烂笔头,记录一下C#缓存使用的情景模式....个人理解,不正之处,欢迎指正 讨论 Cookie,Session,Application,Cache 四种,有的缓存情景对人,有的缓存情景对事儿 ...
- [区别]APPlication,Session,Cookie,ViewState和Cache
原文发布时间为:2009-08-01 -- 来源于本人的百度文章 [由搬家工具导入] 在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewS ...
- 【转】Cookie和Session和Cache
1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实 ...
- session & cookie(li)
Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...
随机推荐
- 基于CentOS6.8版本配置真实域名的方法
前言:审核了15天的时间终于审核下来了,但是结果发现配置域名掉坑了,记录一下 (一)首先配置域名三步走 1.先到域名商网站解析你你的域名(我的是百度云) 2.接着修改linux的host指向 例如: ...
- mysql表基本查询
第一节 -- or # 单行注释/***多行注释*/ -- c创建数据库examCREATE DATABASE exam; USE exam; /*创建部门表*/CREATE TABLE dept( ...
- Spark源码解析 - Spark-shell浅析
1.准备工作 1.1 安装spark,并配置spark-env.sh 使用spark-shell前需要安装spark,详情可以参考http://www.cnblogs.com/swordfall/p/ ...
- Redis基本概念、基本使用与单机集群部署
1. Redis基础 1.1 Redis概述 Redis是一个开源.先进的key-value存储,并用于构建高性能.可扩展的应用程序的完美解决方案. Redis从它的许多竞争继承了三个主要特点: ...
- maven打包可执行jar文件运行报错
起因 项目中同时依赖了Spring和MyBatis,并使用mybatis-spring集成MyBatis和Spring. 使用maven打包为可执行jar文件运行,打包插件为:maven-shade- ...
- C#中连接MySQL数据
小结一下MySQL在C#中是如何连接的,并做一些简单的选择(SELECT).插入( INSERT).更新( UPDATE).删除(DELETE ) (一)连接 a) Firstly, you shou ...
- VS2017 15.6之后支持直接反编译了
在 15.6 预览版 2 中,增加了导航到反编译源功能. 启用后,在任何引用的类型或成员上调用转到定义或查看定义时,将显示其通过 ILSpy 反编译使用重新构造方法主体的定义. 要打开此功能,请转到“ ...
- daemon_init函数:调用该函数把普通进程转变为守护进程
#include <unistd.h> #include <syslog.h> #include <fcntl.h> #include <signal.h&g ...
- 割点判断+luogu 3469 POI2008 BLO
1.根节点,有2棵及以上子树 2.非根节点,有子节点dfn[u]<=low[v] #include <bits/stdc++.h> #define N 1000050 using n ...
- pyqt5-QWidget-窗口状态(最大化最小化等)
setWindowState(state) #设置窗口状态 Qt.WindowNoState 无状态-正常状态 Qt.WindowMinimized 最小化 Qt.Wind ...