这个问题是上周去远洋公司面试的一道笔试题,面试的时候面试官也问到了,虽然事先有所准备当时也回答上了,但是从根本上说自己还不太理解。正好这两天做高效平台评教系统的时候用到了页面传值,就又从网上查了一些相关资料。
常用的页面传值有以下几种:QueryString传值,Session传值,Cookies传值,Application以及Transfer传值。下面我们就一起了解一下各种传值方式的工作机制、相互联系以及优缺点。
QueryString传值又称作URL传值,是我们常用的也是比较简单的传值方式,它通过把我们需要传的数据拼接到连接地址中传输到目标地址。
优点:URL传值操作简单,而且被所有浏览器支持,对于字符串类型的数据传输十分有效。
缺点:安全系数不高,它把我们需要传输的数据完全暴露在地址栏中,如果不通过加密技术,对于安全性高的数据采用URL传值就有些不太理智了。而且该方式对于数据类型有要求,一般只能传递字符串,对于数组以及对象的传递不可使用该方式。
Session传值相信大家肯定不会陌生,它跟Application有一些共同点,也有不同之处。它是一个有作用域的全局变量,举个例子吧:对于一个应用网站来说,Session可以单个用户的信息。Application是没有局域限制的全局变量,它可以存储整个网站的信息,比如说网站的实时访问量。
优点:使用比较简单,不仅可以传输数据,还可以传输对象,数据量的大小不受限制。
缺点:在Session变量中存储大量的数据会消耗较多的服务器资源,数据容易丢失。
这个传值方式大家可能听得或者用的比较少,反正我是没有用过。把它与上面的Session传值联系起来相信我们理解起来就好多了。它在整个应用程序的生命周期中都是有效的,跟全局变量一样,因此可以在任何一个页面对其进行存取操作。
优点:使用简单,消耗较少的服务器资源,不仅可以传递数据,还可以传递对象,数据量大小不受限制。
缺点:作为全局变量容易被误操作。
Cookies传值大家再熟悉不过了,经常用电脑和手机的人可能都会在清理垃圾的时候发现有一项就是清理Cookies,当我们清理了之后,发现一些常用网站先前保存的用户名和密码需要重新输入。这就是Cookies的作用所在,它常用于在用户浏览器上存储一些与用户相关的信息,比如我们的用户名密码,当我们登陆的时候选择了保存用户名密码,信息就会被存入Cookies,下次登录的时候不需要我们人为地输入。所以我们清理垃圾的时候要根据需要选择是否清除这一项。Cookies跟Session也有一些相似之处就是都是针对有单个用户的,但它们本质上的区别在于Session存储在服务器端,而Cookies存储在客户端。
优点:使用简单,保存用户状态的一种非常有效的方法,信息全部存储在客户端不会给服务器造成压力。
缺点:安全性不高,容易被伪造,给用户带来一定的内存垃圾。
Transfer传值比较比较先进,只有Transfer才能算得上是面向对象软件设计所使用的方法。使用Transfer方法把流程从当前页面引导到另一个页面中,也就是我们常说的重定向,新的页面使用前页面的应答流,所以这个方法是完全面向对象的。
优点:直接在服务器端进行重定向,使用简单方便,减少了客户端对服务器的请求,可以传递各种数据类型的值和控件的值。
缺点:客户端浏览器中URL地址不会发生变化,因此可能会导致在新的页面出现一些意向不到的情况。比如说原页面跟目标页不在同一个虚拟目录下或其子目录下,一些使用相对路径的图片或者超链接都会导致错误的定向。
以上就是ASP.NET页面传值的内容,更多相关内容请关注PHP中文网(www.php.cn)!