以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)...

在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
    为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示:

方法信息量大小保存时间应用范围保存位置
Application任意大小整个应用程序的生命期所有用户服务器端
Session小量,简单的数据

用户活动时间+一段延迟时间(一般
为20分钟)

单个用户服务器端
Cookie小量,简单的数据可以根据需要设定单个用户客户端
Viewstate小量,简单的数据一个Web页面的生命期单个用户客户端
Cache任意大小可以根据需要设定所有用户服务器端
隐藏域小量,简单的数据一个Web页面的生命期单个用户客户端
查询字符串小量,简单的数据直到下次页面跳转请求单个用户客户端
Web.Config文件不变或极少改变的小量数据直到配置文件被更新单个用户服务器端

     1.Application对象 
    Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在 Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和 Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性 能瓶颈.因此最好不要用此对象保存大的数据集合. 
       2.Session对象
    Session用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).S
ession中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用 程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错 的选择.使用Session对象保存信息的代码如下:

 

//存放信息
Session["username"]="zhouhuan";
//读取数据
string UserName=Session["username"].ToString();

    3.Cookie对象
    Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置 Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不 会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持 Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用 Cookie对象保存的代码如下:

//存放信息
Response.Cookies["UserID"].Value="0001";
//读取信息
string UserID=Response.Cookies["UserID"].Value;

    4.ViewState对象
    ViewState 常用于保存单个用户的状态信息,有效期等于页面的生存期。ViewState容器可以保持大量的数据,但是必须谨慎使用,因为过多使用会影响应用程序的性 能。所有Web服务器控件都使用ViewState在页面回发期音保存自己的状态信息。如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的 ViewState,避免不必要的资源浪费。通过给@Page指令添加“EnableViewState=false”属性可以禁止整个页面的 ViewState。使用ViewState对象保存信息的代码如下。

  //存放信息
   ViewState["nameID"]="0001";
  //读取信息
   string NameID=ViewState["nameID"].ToString();

5.Cache对象
    Cache对象用于在HTTP请求间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。它允许将频繁访问的大量服务器资源存储在内存 中,当用户发出相同的请求后服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每个应用程序专用的, 其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其Cache对象的实例。使用Cache对象保存信息的代码如下。

  //存放信息
   Cache["nameID"]="0001";
  //存放信息
   Cache.Insert("nameID","0001"1);
  //读取信息
  string NameID=Cache["nameID"].ToString();

   6.隐藏域
Hidden控件是属于HTML类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会在用户端 的浏览器中显示,始终处于隐藏状态。但是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,因此在服务器端可以使用Value属性获取或保 存一些数据信息。使用Hidden控件保存信息的代码如下。

  //存放信息
  Hidden.Value="0001";
  //获取信息
  string NameID=Hidden.Value;

7.查询字符串
查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于URL的长度有一定的限制,因此不能传递太大的信息,加外安全性也不是很好。
传递信息如下。

   Response.Redirect("List.aspx?nameID=0001&gradeID=002");
  //执行上面的语句后在IE地址栏显示的URL的代码如下。
   http://localhost/List.aspx?nameID=0001&grade=002
  //当跳转到List.aspx后,可以通过以下代码获得所传递的信息。
  string NameID.GradeID;
   NameID=Request.Params["nameID"];
   GradeID=Request.Params["gradeID"];

      除了以上介绍的几种对象外,还可以使用Context对象和Web.Config配置文件。 
摘自:http://www.cnblogs.com/zhouxiaxue

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php中在网页中显示图片代码,用PHP将网页上的Canvas图像保存到服务器上的方法

在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名。这需要我们评审软件里提供这样一个功能:打开浏览器,登录,进入评审意见页&#x…

xcode 小插件

1.XCode颜色显示插件ColorSense项目地址: https://github.com/omz/ColorSense-for-Xcode2.规范注释生成器VVDocumenter项目地址:https://github.com/onevcat/VVDocumenter-Xcode3.图片名称自动补全 KSImageNamed-Xcode为项目中使用的UIImage的imageNamed…

实现每个点赞用户点击的带属性的字符串

2019独角兽企业重金招聘Python工程师标准>>> #pragma mark - 点击各个点赞用户-(void)setClicked:(TweetCell *)cell andOSCTweet:(OSCTweet *)tweet {NSMutableAttributedString *attributedString [[NSMutableAttributedString alloc] initWithString:tweet.like…

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL。 Null在数据库中表示 不知道的数据,主要有3种意思:1)知道数据存在,但不知道具体值.2)不知道数据是否存在.3)数据不存在.在SQL中, NULL的…

php年月转换为年月日,php 将秒数转换为年、月、日、小时等时间格式

这篇文章主要为大家详细介绍了php 将秒数转换为年、月、日、小时等时间格式,具有一定的参考价值,可以用来参考一下。这个有用的函数能将秒数表示的事件转换为年、月、日、小时等时间格式,php将秒数转换为时间(年、月、日、小时…)&#xff0c…

在某公司用到一些shell

shell里是不能像其它语言那样,随随便便就可以按个空隔下去的! shell的输出 echo chiefcto 函数的声明 function name(){ #打印第一个参数 echo “$1” #打印第二个参数 echo “$2” } 函数是怎么执行的呢? 直接在sh里键入 name 如果需要传参&…

grep/egrep和正则表达式汇总

grep, egrep, fgrep语法格式:grep [option] ... PATTERN FILE--colorauto对目标FILE进行搜索,显示能够匹配的行正则表达式基本正则: grep扩展正则: grep -E 或者 egrepfgrep: fast但是不支持正则表达基本正则表达式的元…

xampp php5.6 7.1共存,New XAMPP with PHP 7.2.8, 7.1.20, 7.0.31 5.6.37

嗨,阿帕奇的朋友们!We just released new versions of XAMPP for all platforms with the latest PHP versions: 7.2.8, 7.1.20, 7.0.31 & 5.6.37.您可以下载这些新版本http://www.apachefriends.org/download.html.7.2.8 / 7.1.20 / 7.0.31 / 5.6.3…

基于.net开发chrome核心浏览器【四】

原文:基于.net开发chrome核心浏览器【四】一: 上周去北京出差,给国家电网的项目做架构方案,每天都很晚睡,客户那边的副总也这样拼命工作。 累的不行了,直接导致第四篇文章没有按时发出来。 希望虚心学习1,小…

php5.6 pdo.dll 没有,php5.6没有pdo怎么办

php5.6没有pdo是因为在php5.6中php已经内置了pdo功能,只需要在php.ini文件中将“extensionphp_pdo_firebird.dll”等配置项打开即可。推荐:《PHP视频教程》php5.6中没有php.pdo.dll文件我下载的php 5.6要使用pdo模块,但是通过百度发现发现没有…

javascript获取事件源对象和产生事件的对象

事件源对象是指event对象&#xff0c;其封装了与事件相关的详细信息&#xff0c;比如按键状态。获取事件源对象的方法: 1 <!doctype html>2 <html lang"en"> 3 <head> 4 <title>如何获取事件触发源&#xff08;兼容IE和FireFox&#xff…

git push --no-thin

有时候我们执行 git push 将一个 new branch 推送到远程仓库的时候&#xff0c;会被远程仓库阻止。 可能是我们没有相应的权限吧。然而&#xff0c;我在 git push 的时候加上 --no-thin 参数&#xff0c;就可以将其推送上去了。 $ git push --no-thin origin dev注意&#xff0…

java大小写转置,javascript 字符串 数字反转 字母大小写互换

// 符串abcd123ABCD456 怎么转换为 ABCD321abcd654// 数字要倒序 小写转大写, 大写转小写Array.prototype.reverse function() {var tmp;for (var i 0, j this.length - 1; i < j; i, j--) {tmp this[i];this[i] this[j];this[j] tmp;}return this;};function foo(s) …

网页的背景图片代码

网页背景图片代码1.(最普遍类) <style>body{background-image:url(logo.gif);background-repeat:no-repeat;background-position:center}</style> 说明:以上代码为网页背景图片固定代码&#xff01;网页背景图片固定代码&#xff0c;这样&#xff0c;当向下拉网页时…

andriod 新建 Activity_ Form (详细设置)

参考&#xff1a; Starting Another Activity 去创建Activity New->Other->Android->Android Activity->BlankActivity&#xff1a; 输入对应的信息&#xff1a; 创建完毕后&#xff0c;可以看到新建了对应的 src下面的java文件 layout下面的xml 等等&#xff1a; …

php laypage,layui laypage组件常见用法总结

laypage 的使用非常简单&#xff0c;指向一个用于存放分页的容器&#xff0c;通过服务端得到一些初始值&#xff0c;即可完成分页渲染。核心方法&#xff1a; laypage.render(options) 来设置基础参数。一、laypage的常用基础参数layui.use([laypage], function () {laypage l…

Swift标识符和关键字

任何一种计算机语言都离不开标识符和关键字&#xff0c;下面我们将详细介绍Swift标识符和关键字。 标示符 标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议等指定的名字。构成标识符的字母均有一定的规范&#xff0c;Swift语言中标识符的命名规则如下&#xff1a;…

xhost和XServer相关概念汇总

1、xhost 控制什么人可以访问当前主机上的增强 X-Windows。语法:xhost [ | - ] [ Name ] 2、xhost 是用来控制X server访问权限的。通常当你从hostA登陆到hostB上运行hostB上的应用程序时&#xff0c;做为应用程序来说&#xff0c;hostA是client&#xff0c;但是对图形来说&am…

php 匹配双字节字符串,收集一些常用的正则表达式(匹配中文字符、匹配双字节字符、匹配HTML标记、匹配空行 and so on~~~)...

正则表达式用于字符串处理&#xff0c;表单验证等场合&#xff0c;实用高效&#xff0c;但用到时总是不太把握&#xff0c;以致往往要上网查一番。我将一些常用的表达式收藏在这里&#xff0c;作备忘之用。本贴随时会更新&#xff0c;请持续关注本站。匹配中文字符的正则表达式…

nyist 17 -----记忆式搜索------Accept

//记忆式搜索 #include <iostream>#include<stdio.h>#include<string.h>using namespace std;char a[10002];int b[10002];int n,ans;int f(int x){ int i,t; if(b[x]>0) return b[x]; b[x]1; for(i0;i<x-1;i) { tf(i); if(a[i]<a[x] && b[…