内置对象跨页面传值有六种:Request,Response,Session,Cookie,Application,VIewState。
一、Request和ResponseRequest
request请求对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。
response 响应对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器,重定向浏览器到另一个URL或设置cookie的值等。
//请求对象重定向传值 Response.Redirect("目标网页?a=值1&b=值2")。 //响应对象获得参数 Request["a"]; Request["b"];
QueryString - 地址栏显示传值(get)采用键值对的模式传值,但有个很大的缺点,会把要传输的数据暴露在地址栏里。
二、Cookie
Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265[1] 。(可以叫做浏览器缓存)
每个浏览器都有自己的Cookie。
//建立Cookie对象并重定向到目标网页 Response.Cookies["键"].Value="值"; Response.Redirect("目标网页") //目标网页接收Cookie对象 Request.Cookies["键"];
//会话Cookie //20分钟自动过期关闭浏览器自动过期 Response.Cookies["键"].Value = 值; //持久Cookie //给Cookie设置一个过期时间 Response.Cookies["键"].Expires = DateTime.Now.AddDays(3); //清除Cookie //将Cookie的过期时间设置为今天以前的时间 Response.Response.Cookies["user"].Expires = DateTime.Now.AddDays(-10);
Cookie存在本地客户端,不占用服务器资源,可以用于保持用户登录状态,可以缓存不是很重要的数据。相对来说不是很安全,而且不能存中文。
三、Session
Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭浏览器所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。
//定义Session并重定向 Session["键"]="值"; Response.Redirect("目标网页") //接收Session 接收到的是一个object对象 Session["键"];
Session实际上是存在服务器上的缓存,只有会话型,20分钟或关闭浏览器会失效。优点是安全,可以存任意数据类型,缺点是占用服务器资源,取到的值是object类型,需要进行类型转换。
四、Appliction
web 上的一个应用程序可以是一组 ASP 文件。这些 ASP 文件一起协同工作来完成某项任务。ASP 中的 Application 对象用来把这些文件捆绑在一起。
Application 对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 session 对象和用户的关系是一一对应的。
Application 对象握有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。这意味着可以从任何的页面访问这些信息。同时也意味着你可在一个地点改变这些信息,然后这些改变会自动反映在所有的页面上。
使用方法和Session一样,
Application["键"]="值";
保存在服务端,是公用的,所有人共用一套,有效期永久,不删除会一直存在,可以用在新闻类的网页上,针对高并发的数据。缺点是数据不够及时。
五、ViewState
在web窗体控件设置为runat = "server",这个控件会被附加一个隐藏的属性_ViewState,_ViewState存放了所有控件在ViewState中的状态值。ViewState是一个名称/值的对象集合。当请求某个页面时,ASP.NET会把所有控件的状态序列化成一个字符串,然后作为窗体的隐藏属性送到客户端,当客户端吧页面回传时,ASP.NET分析回传的窗体属性,并赋给控件对应的值。
ViewState类在重新请求页面时会自动把之前的控件的状态填充进去。
ViewState会自动附加。
六、
web端传值是一件很麻烦的事,因为http的无状态性。
QueryString是地址栏显示传值(get),Cookie和Session都是全局变量(post)。