QueryString参数传递和Session参数传递的对比
首先介绍一下几种数据类型
在
5
中数据源绑定控件中提供了一下
6
种常用到的参数类型:
u
Control
:参数是网页中的控件的属性值。使用控件的编号、名称来确定控件的属性值。主要是针对控件的参数。
u
Cookie
:参数是
HttpCookie
对象的值。
Cookie
能为
Web
应用程序保存用户相关信息,不至于使用户信息丢失。当用户下次再访问这个的站点时,应用程序就可以检索以前保存的信息。
u
Form
:适用于页面之间传递参数。用
Form
传递参数的好处是:参数隐含传递,别人无法通过查看文件属性来看到参数的值,比较适合于在页面之间传递口令等保密参数。
u
Profile
:适用于保存当前用户配置文件中的属性的值。
u
QueryString
:同样适用用页面之间传递参数。
这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的,这样做很不安全,同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。
u
Session
:适用用页面之间传递参数
通过浏览器来。
把控件中的值存在
Session
变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在
Session
变量存储过多的数据会消耗比较多的服务器资源,有时候也会造成
Session
值的丢失。
下面对一下QueryString参数传递和Session参数传递
A.QueryString 参数传递
在
WEB
程序开发的过程中常常使用使用
QueryString
参数传递方式。
QuerySting
在页面间传递值是一种很老的传参机制。
使用
QueryString
方法的主要优点是实现起来非常简单;然而它的缺点是传递的值会显示在浏览器的地址栏里面,这样对于安全性要求较高的程序来说是很不安全的。但是在传递的值少而安全性要求不高的情况下,使用这个方法还是一个不错的。
QueryString
方法传递值很方便,但是这种方法不能传递对象。
使用这种方法的步骤如下
:
1.
启动
VS2005
。
2.
创建两个
web
页面。
3.
添加
TextBox
控件和按钮。
4.
在按钮的单击事件里创建一个保存
URL
的字符变量。
5.
在保存的
URL
里添加
QueryString
参数。
6.
使用
Response.Redirect
重定向到上面保存的
URL
到
Default
页面
。
实例代码如下所示。
源页面代码:
protected void Button1_Click(object sender, EventArgs e)
{
//添加url,里面存放两个参数,学好和姓名,传递给Default页面
string url;
url = "Default.aspx?xueh=" + TextBox1.Text + "&xingm=" + TextBox2.Text;
Response.Redirect(url);
}
目标页面代码:
protected void Page_Load(object sender, EventArgs e)
{
//使用QueryString方法接收从上个页面传递过来的参数信息,学号、姓名
Label1.Text = Label1.Text + Request.QueryString["xueh"];
Label2.Text = Label2.Text + Request.QueryString["xingm"];
}
运行结果
运行
页面程序,运行结果如图
11-34
所示。在学号和姓名输入栏中要传递的学号和姓名。
图11-34 传值页面
单击“传递”按钮,跳转到下一个页面,显示传递的学号和姓名。如图
11-35
所示。
图11-35 接收页面
B.
使用
Session
变量
在
WEB
程序开发的过程中另一种常用的页面传值方式是使用
Session
传递方式。这种方式与
QueryString
传值方式不同。
通常是把前一个页面的值保存在
Session
变量中,然后在另的页面中使用这些值。但是,需要注意的是在
Session
变量存储过多的数据会消耗比较多的服务器资源,所以对于不用的
Session
值要及时从内存中移除掉。并且长时间不用的
Session
值会丢失。
使用
Session
变量传递值的一般步骤如下:
1.
启动
VS2005
。
2.
创建两个
web
页面。
3.
添加
TextBox
控件和按钮。
4.
在按钮的单击事件里,把控件的值添加到
session
变量里。
5.
使用
Response.Redirect
方法重定向到另一个页面
Default
页面
。
6.
在另一个页面提取
session
的值,在确定不需要使用该
session
时,要显式清除它。
实例代码如下所示。
源页面代码:
protected void Button1_Click(object sender, EventArgs e)
{
//创建两个Session变量传值,学好和姓名,传递给Default页面
Session["xueh"] = TextBox1.Text;
Session["xingm"] = TextBox2.Text;
Server.Transfer("Default.aspx");
}
目标页面代码:
protected void Page_Load(object sender, EventArgs e)
{
//在Default页面接收传递过来的参数信息,学号、姓名
Label1.Text = Label1.Text + Session["xueh"].ToString();
Label2.Text = Label2.Text + Session["xingm"].ToString();
//讲Session值从内存中移除,避免占用内存
Session.Remove("xueh");
Session.Remove("xingm");
}
运行结果
运行
页面程序,运行结果如图
11-36
所示。在学号和姓名输入栏中要传递的学号和姓名。
图11-36 传值页面
单击“传递”按钮,跳转到下一个页面,显示传递的学号和姓名。如图
11-37
所示。