网络技术-数据库-HTTP开发-传参-300

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Web页面是无状态的,服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留。

在用 设计开发一个Web系统时,遇到一个重要的问题是如何保证数据在页面间进行正确、安全和高效地传送, 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨。

NET 下的解决此问题的各种方法和各自的适用场合。

页面间数据传递的各种方法和分析
1.使用Querystring 方法
QueryString 也叫查询字符串,这种方法将要传递的数据附加在网页地址(URL)后面进行传递。

如页面A.aspx 跳转到页面B.aspx,可以用Response.Redirect("B.aspx?参数名称=参数值")方法,也可以用超链接,页面跳转后,在目标页面中可用Ruquest. Querystring ["参数名称"]来接收参数。

使用QuerySting 方法的优点是实现简单,不使用服务器资源;缺点是传递的值会显示在浏览器的地址栏上,有被篡改的风险,不能传递对象,只有在通过URL 请求页时查询字符串才是可行的。

下面通过一个例子来完成传值工作,步骤为:
1.在新建的窗体中放置一个button1,两个TextBox1,TextBox2
代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
string url;
}
2、新建一个目标页面命名为Welcome.aspx,放置两个Label1,Label2,在该窗体的Page_Load中添加如下代码:
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
运行,即可看到传递后的结果了。

2.使用Cookie
Cookie 可以在页面之间传递少量信息,可以存储在客户端的文本文件中,也可存储在客户端的内存中。

Cookie 方法适用于存储少量页面中经常改动的信息,如为登陆过的网站保存登陆用户名,为用户输入提供方便,还有在一些用户自定义项目上保存用户的个性化设置。

使用Cookie传递数据时可用:Response.Cookies["键名"]=键值;取出数据用:变量名=Request.Cookies["键名"]。

使用Cookie 优点是:Cookie 存储在客户端,不使用服务器资源,实现简单,可配置到期时间。

缺点是:可以存储的数据量比较少,由于Cookie 并不被所有的浏览器支持,而且还可能被用户禁止或删除,所以不能用于保存关键数据。

另外,Cookie 保存的形式是简单的明文文本,在它里面不宜保存敏感的、未加密的数据。

3.使用application 变量
使用Application 变量也可以实现页面间的传值,Application变量是全局性的,所有用户共享一个Application 变量,一旦定义,它将影响到程序的所有部分。

如果想在整个应用程序范围使用某个变量值,Application 对象将是最佳的选择。

存入数据时,把值添加到Application 变量里:Application["变量名"]=数值;取出数据用:变量=Application["变量名"]。

Application 优点:易于使用,全局范围。

可供应用程序中的所有页来访问。

缺点:若保存数据的服务器端进程被损坏(如因服务器崩溃、升级或关闭而损坏),那么数据就会丢失,所以利用Application 一定要有保底的策略;占用服务器端的内存,这可能会影响服务器的性能以及应用程序的可伸缩性。

4.使用session 变量
Session 对象可以用来存储需要维护的指定对话的信息,不同的客户端生成不同的Session 对象。

Session 用于存储特定于单独会话的短期信息。

Session 的使用方法和格式与Application 相同。

优点:易于实现,并且提供较高的安全性和持久性,缺点是耗用服务器端的内存,所以不要存储大量的信息。

Session 最常见的用途是与Cookie 一起向Web 应用程序提供用户标识功能,Session也可用于不支持Cookie 的浏览器。

举个例子:
1、创建一个窗体,放置一个button1,再放置两个TextBox1,TextBox2
为button按钮创建click事件
代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{ Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("welcome.aspx");
}
2、新建一个目标页面命名为welcome.aspx,放置两个Label1,Label2,在Page_Load中添加如下代码:private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
}
运行,即可看到传递后的结果了。

不同页面跳转情况下可采用的传值方法
1.情况一:源页面可以跳转到目标页面,源页面传递数据给目标页面
使用查询字符串,将少量信息从一页传输到另一页以及不存在安全性问题时,是一个简单常用的方法
3.情况二:源页面传递数值给目标页面,而源页面不能直接连接到目标页面。

有多个方法,具体用哪个要看具体情况。

Application:存储由多个用户使用且更改不频繁的全局信息,此时安全性不成为问题。

不要存储大量的信息。

Session:存储特定于单独会话的短期信息,并且需要较高的安全性。

不要在会话状态中存储大量的信息。

需要注意,将为应用程序中每一会话的生存期创建并维护会话状态对象。

在支持许多用户的应用程序中,这可能会占用大量服务器资源并影响可缩放性。

Cookie:当您需要在客户端存储少量信息以及不存在安全性问题时使用。

相关文档
最新文档