AspNet页面间数据共享方法探讨.docx
- 文档编号:11167388
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:7
- 大小:19.56KB
AspNet页面间数据共享方法探讨.docx
《AspNet页面间数据共享方法探讨.docx》由会员分享,可在线阅读,更多相关《AspNet页面间数据共享方法探讨.docx(7页珍藏版)》请在冰点文库上搜索。
AspNet页面间数据共享方法探讨
Asp.Net页面间数据共享方法探讨
摘要:
使用ASP.NET开发Web应用,网页间经常需要数据共享,通过实例讨论了几种数据传递和共享模式,包括最常见的使用QueryString和Server.Transfer传参,以及使用Server控件、Applicaton对象、Session对象、Cookie对象、文件file和数据库达到数据共享,并对其作了分析比较总结,在应用时应根据实际情况采用不同的方案。
关键词:
ASP.NET;数据共享;Server控件;传值
中图分类号:
TP312文献标识码:
A文章编号:
1009-3044(2009)25-7129-03
Asp.NetInter-pageDataSharingMethodsDiscussion
JIAZong-xing,ZHANGLi
(ShanxiAgriculturalUniversityModernEducationalTechnologyCollege,Taigu030801,China)
Abstract:
Webpageusuallyneedsdatasharingfrequently,whenweuseASP.NETtodeveloptheWebapplication.Thepaperdiscussedseveralpatternsofdatatransferanddatasharingthroughtheexamples,includingmostcommonQueryStringandServer.Transfer.,aswellasusesServercontrols、Application、Session、Cookie、FileandDatabaseachieveddatasharing,andmadetheanalysiscomparisontoittosummarize,whenapplicationshouldactaccordingtotheactualsituationtousethedifferentplan.
Keywords:
ASP.NET;datasharing;servercontrol;datatransfer
Asp.Net是继Asp之后,微软提出的用于创建动态网页的一种强大的服务器端技术。
而动态网页间的数据共享问题一直是建立Web网站中的主要技术和安全隐患。
除了可使用最常见的QueryString和Server.Tranfer进行数据传递[1]ASP.NET中可以通过Web服务器控件、Application、Session、Cookie、文件file来共享数据,为用户数据共享提供了多种选择。
下面就各种数据共享方式进行举例分析比较。
1数据共享方式分析比较
我们在制作Web网站时,会使用多个网页来完成特定的工作,这样的话,这些网页间的数据传递及共享是不可避免的。
ASP.NET为我们提供了几种方式:
QueryString、Server.Transfer方法、Server控件、Application、Session、Cookice、File对象和数据库来实现。
下面分别一一介绍。
2使用Querystring
Querystring传递值是最简单和最方便的方法,但其安全性不好。
其缺点就是会把要传送的值显示在浏览器的地址栏中。
另外,URL的参数传递只能是简单的数据类型,如整型,字符串等,不能够传递对象。
如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。
下面通过一个小例子来完成传值工作,步骤如下:
1)创建一个源页面webform1,放置一个button1,两个TextBox1,TextBox2
2)为button按钮创建click事件,代码如下:
privatevoidButton1_Click(objectsender,System.EventArgse)
{stringurl;
url="webform2.aspx?
name="+TextBox1.Text+"&address="+TextBox2.Text;
Response.Redirect(url);
}
3)新建一个目标页面命名为webform2,放置两个Label1,Label2。
在webform2的Page_Load中添加代码:
privatevoidPage_Load(objectsender,System.EventArgse)
{Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["address"];
}
运行,即可看到传递后的结果了。
这种方法的缺点是:
使用明码传递参数,也就是不需要保密的参数,同时在使用querystring传值得时候不能传递对象,参数的长度不能大于1024字节。
当参数中有中文的时候,通常需要使用HttpUlitity.UrlEncode方法来对参数进行编码和解码。
3使用Server.Transfer
虽然这种方法有点复杂,但也不失为一种在页面传值的方式。
举个例子看看:
1)创建一个源页面webform1,放置一个button1,两个TextBox1,TextBox2,
2)为button按钮创建click事件,代码如下:
privatevoidButton1_Click(objectsender,System.EventArgse)
{Server.Transfer("webform2.aspx");}
3)创建过程来返回TextBox1,TextBox2控件的值代码如下:
publicstringName
{get
{returnTextBox1.Text;}
}
publicstringAddress
{get
{returnTextBox2.Text;}
}
4)新建一个目标页面命名为webform2,放置两个Label1,Label2,在其Page_Load中添加如下代码:
privatevoidPage_Load(objectsender,System.EventArgse)
{WebForm1wf1;//创建原始窗体的实例
wf1=(WebForm1)Context.Handler;//获得实例化的句柄
Label1.Text=wf1.Name;
Label2.Text=wf1.Address;
}
使用Querystring和Server.Transfer区别:
1)切换对象不同,Querystring[2]中可以切换到任何存在的网页,而Server.Transfer只能切换到同目录或子目录的.aspx网页;2)Querystring浏览器地址栏所呈现的结果不同,切换到另一个网页后,浏览器地址栏显示新网址及附带相关数据,而Server.Transfer仍然显示旧的地址不显示传送的数据;3)传送的数据量不同,Querystring只能传送2KB以内的数据,Server.Transfer则可传送超过2KB的数据。
所以,从切换对象来看,Querystring功能比较多,但Server.Transfer具有保密功能,且传送的数据量大。
4其他方法
4.1Sever控件
创建一webform页面,页面上放置一个TextBox,其属性值设置为:
runat="sever"id="sData"visible=False,再放置一个button,其属性值设置为:
Text="PostBack"OnClick="Button_Click"。
在其Page_Load中添加如下代码:
privatevoidPage_Load(objectsender,System.EventArgse)
{IntgData
gData=gData+100
sData.Text=Val(sData.Text)+100;
Respone.Write("gData="&gData&"
"
Respone.Write("sData="&Val(sData.Text))
}
第一次网页显示的结果为:
gData=100
sData=100
在按下“PostBack”按钮后,gData为100,sData为200。
连续按几次后,gData的值一直为100,而sData的值每按一次就增加100,结果如表1。
从上我们可看出,一般变量无法作为共享数据,而Server控件可以成为同一网页在不同状态下(网页第一次被加载、按钮被按下、事件发生时等状态)的共享数据。
4.2使用Application
Application["name"]="李明";
任意一个页面可以这样接收:
stringstr=Application["name"].ToString():
使用Application变量[3]也可以实现页面间传递值,Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样;所以可以在不同的页面中对它进行存取。
多个请求访问时可以共享这一个变量,均可对它进行操作,该变量可以被整个应用程序的各个页面直接使用。
其优点是使用简单,消耗较少的服务器资源,不仅能传递简单数据,还能传递对象,并且数据量大小是不限制的;缺点是Application变量作为全局变量容易被误操作。
4.3使用Session
Session["name"]="李明";
任意一个页面可以这样接收:
stringstr=Session["name"].ToString():
Session.Remove("name");//释放掉该Session所占用的服务器资源
使用Session变量[4]和Application变量非常类似,与Application变量的区别是当有多个请求访问时,每个请求有各自的Session变量,且只能对自己的该Session变量进行操作,整个应用程序的各页面直接使用这个变量来获得用户的基本信息。
其优点是使用简单,不仅能传递简单数据类型,还能传递对象,不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失;缺点是使用Session变量往往会占用服务器端的内存使用,所以在网页流量很大的时候,Session便不能很好的完成传值得任务,由于session有一个timeout,所以在使用的时候对用户的操作也有一定的影响。
4.4使用Cookie
与Session一样,作用于用户个人,但是有个本质的区别,即Cookie是存放在客户端的,而Session是存放在服务器端的。
Cookie要配合ASP.NET内置对象Request来使用。
HttpCookiemycookie=newHttpCookie("name");
mycookie.Value="李明";Response.AppendCookie(mycookie);
在任意页面读取Cookie中存放的数据:
stringstr=Request.Cookies["name"].Vale;
Cookie[5]作为一种提交请求时保存数据的方式,有很明显的优缺点:
浏览器对Cookie的大小有限制,只有不超过4096字节才能保证被接受,不能保存对象,另外,作为保存时间,也就是数据的有效期来说,却是保存得最好的。
我们可以通过设置cookie得过期时间等属性来设置。
4.5使用文件(File)
文件和Application类似,可供不同连接者的所有网页共享,但其生命周期比Application对象长,Application会在IIS结束执行或关机时结束生命周期,而文件则不受此限制。
方法:
使用StreamReader对象:
StreamReadersReader=NewSreamReader(“文件路径名“,Encoding.Deafault);
StringS1=sReader.ReadLine();//读取串流的下一行数据
StringS2=sReader.ReadToEnd();//读取串流接下来的所有数据
除了上述方法外,还可使用数据库来进行数据共享,在此我们不做详细介绍。
5总结
下面针对不同的情况对ASP.NET数据共享模式作一个小结,如表2所示。
1)同一网页:
同一网页因为发生某事件(如按下按钮)而产生多种不同状态的网页,这类网页以Server控件作为共享数据最为普遍。
2)同一浏览窗口、不同网页:
若有某项工作需使用多个网页来完成,则当使用者开启浏览窗口后,会先浏览第一个网页,而后随着网页的操作进入第二个网页、第三个网页……,但整个操作过程都在同一个浏览窗口上进行(没有额外开启另一个浏览窗口)。
这类网页所采用的共享数据可采用常用的Querystring和Server.Transfer方法,及Session对象和Cookie对象。
3)同一部机器、不同浏览窗口(可能浏览相同或不同网页):
使用者在同一部机器上,开启多个浏览器,而这些浏览窗口可能浏览相同网页或不同网页。
这种情况可使用Cookie对象共享数据。
4)不同机器:
不同使用者在不同机器上浏览相同或不同的网页。
这种情况以Application对象、文件、数据库为共享数据最为普遍。
参考文献:
[1]徐少华,张华伟,李浩.在ASP.NET中实现Web页面值传递方法的比较[J].武汉理工大学学报:
信息与管理工程版,2006,28(6):
37-40.
[2]王国荣.ASP.NET网页制作教程――从基本语法学起[M].武汉:
华中科技大学出版社,2002.
[3]刘永建.ASP.NET网页间传值方法探讨[J].计算机与网络,2008(15):
169-170,174.
[4]RussBasiura,RichardConway.ProfessionalASP.NETSecurityASP.NET安全性高级编程[M].王晓娜,黄开枝,译.北京:
清华大学出版社,2003.
[5]孟永定,初探A中参数传递的实现方法[J].甘肃科技,2007,23(11):
73-74,42.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AspNet 页面 数据 共享 方法 探讨