• [转]ASP.NET页面基本对象


    本文转自:http://blog.163.com/hweibin126@126/blog/static/170442469201122343338691/

    ASP.NET页面基本对象:Application、Session、Request、Response、Server、Cookie、ViewState

    1. Application、

    所有的用户共用 (经典实例:统计网页访问人数),全局变量

    1).Application对象来自于HttpApplictionState类,它可以在多个请求、连接之间共享公用信息,也可以在各个请求和连接之间充当信息传递的通道。

    2).Application对象是共有的对象,所有用户都可以对某个特定的Application对象进行修改。

    3).当用户第一次访问某虚拟目录的资源时Application对象被创建,退出应用程序或关闭服务器时被撤销。Application对象变量中止于停止IIS服务

       需要注意的点:

    1). 因为Application是共有的,一般在Global.asax文件中设置

    2). 为避免并发情况,使用lock方法

                   Application.Lock();

                   Application["Count"] = int.Parse(Application["Count"].ToString()) + 1;

                   Session["MyID"] = 0;

                   Application.UnLock();

    3). Application对象利用“键—值”对的字典方法来定义,

       其中“键”为字符串,代表状态的“名”,“值”可以是任何类型的数据。

                  Application.Add("count", 1);  //键值对的方法

                  Application["msg"] = "My Name";

                  Application.Clear();     //清除Application集合中的内容。

                  Application.RemoveAll();

    2. Session、

    Session 对象可以保存任何数据类型

    1)、HttpSessionState类的一个实例,其功能和Application对象类似,都是用来存储跨网页程序的变量或者对象。

    2)、Session对象变量只针对单一网页使用者,也就是说各个连接的机器有各自的Session对象变量,不同的客户端无法互相存取。

    3)、Session对象变量中止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session变量对象的有效时间时,Session对象变量就会消失。

    什么是会话状态?会话状态(Session State)是为单个用户保留的状态。

    3. Request、

    功能是从客户端得到数据。

    一般第一次访问页面是使用get传值,回发是使用post方式传值。

    在接受上一个页面传递过来的值时:

    如果上一页使用的是get方式传值,那么就是使用'Request.QueryString["上一页需要传递值的控件ID"]'接收;

    如果上一页使用的是post方式传值,那么就使用'Request.Form["上一页需要传递值的控件ID"]'接收。

    Request对象它提供对当前页请求的访问,其中包括请求标题、Cookie、客户端证书、查询字符串等,你可以使用此类来读取浏览器已经发送的内容。

    服务端常常使用Request对象从客户端得到数据信息

    它有两个常用方法:

    Form[]和QueryString[]方法。

    客户端提交的方式有:

              get: 对应Request.QueryString[] 这是使用Url路径值提交。也称显示提交。

              post: 对应Request.Form[] 也称隐式提交。这是浏览器默认的提交方式。他是靠控件的name和value传递值的。不识别ID属性,所以对于HTML页面控件必须要有Name属性。

    4. Response、

    功能是向浏览器输出信息。

    Response.End(); 当遇到"Response.End();"时表示所有程序结束

    Response.Write(""); 输出自定义信息

    Response.Redirect("Default.aspx"); 表示跳转到指定的"Default.aspx"页面(服务器端跳转,客服端无法感知,属于客服端的请求)

    5. Server、

    Server对象提供的方法和属性可以访问服务器。

    Server.MapPath("."); 表示当前所在的目录

    Server.MapPath("../"); 表示当前所在的目录的上一级目录

    Server.MapPath("http://www.cnblogs.com/"); 表示当前所在的目录的上一级目录的上一级目录

    Server.MapPath("~/"); 表示当前程序的根目录

    Server.Execute 方法是运行指定的页面并将结果返回到当前页面输出(不跳转到指定执行的页面,内部执行)

    Server.Transfer 方法是终止当前页面,跳转到指定的页面执行(终止当前页的执行,并为当前请求开始执行新页。)

    HttpServerUtility类的一个实例,它定义了一个与Web服务器相关的类提供对服务器上的方法和属性的访问。

    用法:

    ?        当前文件所在物理路径:Response.Write(Server.MapPath("."));

    ?        HTML编码:Response.Write(Server.HtmlEncode("<h1>好好学习,<br><h3>天天向上"));

    ?        URL编码:Response.Write(Server.UrlEncode("<h1>好好学习,<br><h3>天天向上"));

            解码:Response.Write(Server.HtmlEncode(str));

    ?        Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。

    ?        Server.Transfer

    ?        它是从server端直接向下一页发起请求,不需要client再次发送请求. 如果你的网页非常依赖Response.Redirect,这个小小的改变可以提高将近25%的效率。

    6. Cookie、

    Cookie对象的创建:

    HttpCookie cookie=new HttpCookie("Cookie名称","保存的值");

    //指定Cookie的生命周期,如果没有指定cookie的生命周期那么系统会自动当做临时cookie处理,(这里表示生命周期为10天)

    cookie.Expires=DateTine.Now.AddDays(10);

    //把创建好的Cookie对象添加到客户端cookie文件

    Response.Cookies.Add(cookie);

    //读取Cookie文件信息

    Request.cookie["Cookie名称"];

    HttpCookieCollection类的一个实例,它用于保存客户端浏览器请求的服务器页面,也可以用它存取非敏感性的用户信息,信息保存的时间可以根据需要设置。

    Cookie对象的所有信息保存在客户机器上。

    7. ViewState

    类似于Session对象,只是ViewState不存在生命周期,即在页面关闭之前视图状态对象是不会消失的。

    ViewState只局限于某个页面,而不能跨页面使用。使用bass64编码方式保存。

    容易混绕的知识点区分:

    1.  Application和Session的相同点和不同点:

    Application对象和Session对象都属于服务器对象,用来保存页面中或用户的一些数据。

    Application对象是共有的对象,所有用户都可以对某个特定的Application对象进行修改。Session对象变量只针对单一网页使用者,也就是说各个连接的机器有各自的Session对象变量,不同的客户端无法互相存取。

    Application对象变量中止于停止IIS服务;Session对象变量中止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定Session变量对象的有效时间时,Session对象变量就会消失。

    2.Session和Cookie的相同点和不同点:

    ?        可以保存用户信息。

    ?        不同的是,Session对象的所有信息保存在服务器上,而Cookie对象的所有信息保存在客户机器上。

    3.Server.Execute()和Server.Transfer()和Response.Redirect()的区别:

    ?        Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。

    ?        Server.Transfer

    ?        它是从server端直接向下一页发起请求,不需要client再次发送请求. 如果你的网页非常依赖Response.Redirect,这个小小的改变可以提高将近25%的效率。

    用自己的话来说:

    Server.Execute()会把所请求的页面加载到本页的前面和合并成一个页面。而Server.Transfer()把所请求的页面调过来加载到本页显示。

    Server.Execute()和Server.Transfer()都是从服务器中发出的请求。而Response.Redirect()是从客户端发出的请求。

    所以Response.Redirect()要重新发一次请求呈现页面。在本页面执行完成后,呈现另外页面时本页面在内存当中会自动卸载。

    Server.Execute 方法是运行指定的页面并将结果返回到当前页面输出(不跳转到指定执行的页面,内部执行)

    Server.Transfer 方法是终止当前页面,跳转到指定的页面执行(终止当前页的执行,并为当前请求开始执行新页。)

    Response.Redirect("Default.aspx"); 表示跳转到指定的"Default.aspx"页面(服务器端跳转,客服端无法感知,属于客服端的请求)

  • 相关阅读:
    Python 生产者与消费者模型
    Python 进程队列
    Python 进程
    Python Socket网络编程
    Python 异常处理
    C# .net 下载了个.dll的文件,怎么用啊?
    ScriptManager.RegisterStartupScript用法详解
    ScriptManager.RegisterStartupScript与ClientScript.RegisterStartupScript区别
    IDisposable接口
    Guid排序问题
  • 原文地址:https://www.cnblogs.com/freeliver54/p/2982066.html
Copyright © 2020-2023  润新知