ASP.Net篇之QueryString与页面传值的总结
首先补充一下Session的删除:
移除个别:Session.Remove("aa");
全部清除:Session.Clear(); (一般应用于注销)
QueryString:
如果传中文的时候出了问题的话,解决方法:
编码问题:
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
另外一个方法是在QueryString中先用它对汉字编码: Server.UrlEncode(汉字).ToString();
例如:http://localhost/test.aspx?lanmu=Server.UrlEncode(汉字).ToString()
QueryString在ASP.Net中的基本用法:
发送端:
string querystr = "xxxxx";
Response.Redirect(”text.aspx?a="+querystr);
接收端:
Request.QueryString["a"];
QueryString的主要特点:
简单快捷,但是传递的值会显示在浏览器的地址栏上面,考虑到安全性的问题,则需要(如果中文的话,则进行编码,还有取值时候的反编码)。
同时QueryString是不能传递对象的,顾名思义,传递的是string字符串,所以,在传递一些对安全性要求不高的数值,或者一些短小的字符串时,可以考虑使用。
QueryString的编码方面Server.UrlEncode、HttpUtility.UrlDecode的区别:
Server.UrlEncode的编码方式是按照本地程序设置的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照.net的utf-8格式进行编码的。
Response.Redirect和Server.Transfer区别
请求的过程:
1)浏览器aspx文件请求--->服务器执行--->遇到Response.Redirect语句->服务器发送Response.Redirect后面的地址给客户机端的浏览器--->浏览器请求执行新的地址
2)浏览器aspx文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件
可以见Server.Transfer比Response.Redirect少了一次服务器发送回来和客户端再请求的过程.
跳转对象:
1)Response.Redirect可以切换到任何存在的网页。
2)Server.Transfer只能切换到同目录或者子目录的网页.
数据保密:
1、Response.Redirect后地址会变成跳转后的页面地址。
2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。
传递的数据量(网址后附带的参数):
1、Response.Redirect能够传递的数据以2KB(也就是地址栏中地址的最大的长度)为限。
2、传递的数据超过2KB时,务必使用Server.Transfer。
页面传值的总结:
客户端
1.查询字苻串QueryString---利用URL在客户机和服务器间进行数据交换
2.隐藏的窗体字段hidden---在窗体字段中设置和读取数据
3.COOKIE---保存在客户浏览器上的数据
4.视图状态ViewState---保存页面相关数据
服务器端:
5.应用程序Application---这种数据在应用程序整个生命周期内可以被所有用户利用
6.会话Session---这种数据和每个用户联系
7.暂存状态Context---这种数据在单个请求过程中存在
8.缓存Cache---这种数据与应用程序相类似
9.其他物理数据存放媒体---例如数据库,TXT文本,XML文件等等
10. 使用Server.Transfer方法
请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
QueryString 传递一个或多个安全性要求不高或是结构简单的数值。但是对于传递数组或对象的话,就不能用这个方法了
session(viewstate) 简单,但易丢失 作用于用户个人,过量的存储会导致服务器内存资源的耗尽。
application 对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock
cookie 简单,但可能不支持,可能被伪造 Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用
input ttype="hidden" 简单,可能被伪造
url参数简单,显示于地址栏,长度有限
Server.Transfer 把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流
数据库稳定,安全,但性能相对弱
什么是Viewstate?它有什么作用?
ViewState用来保存页面状态,就是说提交之后我们还可以看到文本框里面的内容就是ViewState保存的功劳。
ViewState只维护当前页面的状态,不同页面之间不能共享,Session可以。
ViewState你可以理解为一个隐藏控件。