zoukankan      html  css  js  c++  java
  • ASP.NET 常用对象

     

    ASP中包含6个无需创建即可直接调用和访问的内置对象,即Request,Response,Session,Application,Server和Cookie。当web应用程序运行时,这些对象可以用来维护有关当前应用程序、HTTP请求、web服务器的活动状态等基本信息,并为用户的HTTP请求和web服务器的处理提供桥梁作用。而在ASP.NET对象中,这些对象仍然存在。不同的是,在.NET框架中,这些内部对象是由封装好的类来定义的,且已成为HttpContext类(封装了特定http请求的所有信息)的属性。由于ASP.NET在初始化页面请求时已经自动创建了这些内部对象,因此可以直接使用它们而无需再对类进行实例化。

    一、Request对象


      Request对象对应ASP.NET中的HttpRequest类,当客户端发出请求执行ASP.NET程序时,CLR会将客户端的请求信息包含在Request对象中,其中包括报头(Head)、客户端浏览器的信息(包括浏览器类型及浏览器版本号)、编码方式、请求方法(包括POST及GET),几所带参数信息(包括参数名及参数值)等。通过使用Request对象,我们可以访问HTML基于表单的数据和通过URL发送的参数列表信息,同时还可以接受来自客户端的Cookie信息。

    Request对象的调用方法如下:

    Request.Collection("Variable")

      Collection是一个属性集合,包括QueySrting,Form,cookies和ServerVariables,表示获取数据的方法。其中,QueryString用于获取HTTP查询字符串集合,Form用于获取窗体的变量集合,Cookies用于获取客户端发送的Cookie集合ServerVariable用于获取web服务器的变量集合。Collection是可以省略的,如果省略,那么Request对象会依照QueryString、Form、Cookies及ServerVariable的顺序查找,直至发现Variable所对应的关键字为止,并返回其值;如果没有发现Variable对应的关键字,则返回空值。

      当Request对象使用Form属性来获取窗体表单的数据时,一般是在窗体页面提交完成之后。窗体页面的提交方式有两种,即POST和GET。当使用POST提交方式时,窗体中的数据会作为Form集合的元素被发送到服务器端;当使用GET提交方式时,窗体中的表单数据将作为查询字符串的形式通过URL传递。此时,要得到其值,可使用Request对象的QueryString属性。

    下面来看两个分别使用POST和GET提交数据的范例:

    例一:用Form的POST方式发送数据
    <html>
      <head>
      <title>使用POST方式发送数据</title>

      </head>
      <body>
       <form id = "form1" method = "post" runat ="server">
         <asp:label id = "label1" runat = "server" text="请提交数据"></asp:label>
         <br />
         <br />
         您的姓名:
         <asp:TextBox runat = "server" id = "name" text=""></asp:TextBox>
         &nbsp;&nbsp;&nbsp;&nbsp;
         您的年龄:
         <asp:TextBox runat = "server" id = "age" text =""></asp:TextBox>
         &nbsp;&nbsp;&nbsp;&nbsp;
         <asp:button runat = "server" id = "button1"OnClick = "Button_Click" text ="提交"></asp:button>
       </form>
      </body>
    </html>

    <script runat = "server">
      Sub Button_Click(s as object, e as eventargs)
        Dim Str1 as String
        Str1 = "您的姓名是:" & Request.Form("name")& "您的年龄是:" &Request.Form("age")
        label1.text = Str1
      End Sub
    </script>

    例二:用Form的GET方式发送数据
    <html>
      <head>
      <title>使用GET方式发送数据</title>

      </head>
      <body>
        <form id = "form1" method = "post" runat ="server">
          <asp:label id = "label1" runat = "server" text="请提交数据"></asp:label>
          <br />
          <br />
          您的姓名:
          <asp:TextBox runat = "server" id = "name" text=""></asp:TextBox>
          &nbsp;&nbsp;&nbsp;&nbsp;
          您的年龄:
          <asp:TextBox runat = "server" id = "age" text=""></asp:TextBox>
          &nbsp;&nbsp;&nbsp;&nbsp;
          <asp:button runat = "server" id = "button1"OnClick = "Button_Click" text ="提交"></asp:button>
        </form>
      </body>
    </html>

    <script runat = "server">
      Sub Button_Click(s as object, e as eventargs)
        Dim Str1 as String
        Str1 = "您的姓名是:" & Request.QueryString("name")& "您的年龄是:" &Request.QueryString("age")
        label1.text = Str1
      End Sub
    </script>

      事实上,我们在使用QueryString属性时,也可以通过在请求URL中添加附加信息来传递数据,如:

    /index.aspx?id=1234


      "?"后面的数据便是附加信息。其中"id"表示变量名,"1234"表示该变量的值,获取id变量值的语句是Request.QueryString("id")。如果需要传递多个变量,则可用"&"符号链接,如:


    /index.aspx?id=1234&userid=5678


      使用QueryString和Form属性获取数据的区别在于,前者是一种显示传递,用户可以在地址栏中看到传递的参数及参数值;而后者是一种隐式传递,在传递过程中,用户是无法看到所传递的数据的。因此,使用Form属性来获取数据会更加安全。此外,由于URL得地址长度是有限的,因此使用QueryString属性来接受的数据也是有限的。一般来说,该方式仅能传递256个字节的数据,而通过Form属性来接收的数据最大值可达到2MB。

    Request的ServerVariables属性包含了客户机和服务器的相关环境变量。

    ServerVariables属性的常用环境变量

    HTTP_USER_AGENT    用于获取用户浏览器的类型和版本号
    REMOTE_ADDR      用于获取用户的IP地址
    REQUEST_METHOD    用于获取用户提交数据的方法,如GET和POST
    LOCAL_ADDR      用于获取服务器地址的IP地址
    SERVER_NAME      用于获取服务器的主机名
    PATH_INFO       用于获取但前执行程序的虚拟路径
    PATH_TRANSLATED    用于获取当前执行程序的绝对路径
    CONETNT_LENGTH    用于获取请求程序所发送内容的字符总数
    CONTENT_TYPE     用于获取请求的信息类型
    GATEWAY_INTERFACE   用于获取网管接口
    QUERY_STRING     用于获取URL的附加信息
    SCRIPT_NAME     用于获取当前程序的文件名(包含虚拟路径)
    SERVER_PORT     用于获取服务器接受请求的端口
    SERVER_PROTOCOL   用于获取服务器的协议和版本号
    HTTP_ACCEPT_LANGUAGE用于获取用户所使用的语言

      此外,Request还有一个cookie属性,该属性包含了Cookie对象。

    二、Response对象

      Response对象对应于ASP.NET中的HttpResponse类。当客户发出请求时,CLR会根据用户的请求建立一个Response对象。Response将用于回应客户浏览器。指示浏览器回应内容的包头、服务器端的状态信息,以及输出指定的内容等。

    Response对象的相关属性和方法如下:

    ContentType属性      用于指示Response对象的输出内容类型,默认为text/html
    Buffer属性        表示是否对页面进行缓冲输出,True表示是,False表是否,默认为True,此方法与ASP兼容。
    BufferOutPut属性      表示是否对页面进行缓冲输出,仅适用于ASP.NET
    Clear属性         用于清除缓冲区的所有内容,包括Response显示输出信息及其头信息
    ClearContent属性      用于清除缓冲区的Response显示输出信息
    ClearHeaders属性      用于清除缓冲区的头信息
    Expires属性        用于设置页面在浏览器Cache中失效的时间长度,单位为分钟
    ExpiresAbsolute属性    用于设置页面在浏览器Cache中失效的具体时间
    Flush方法         表示立即将缓冲区的内容向页面输出
    Write方法         用于为当前页面输出指定文本
    End方法          用于立即停止当前程序的处理并返回结果
    BinaryWrite方法      用于将当前指定信息不进行任何字符转换直接写到当前的HTTP输出,此方法主要用来输出非字符的信息
    WriteFile方法       用于将内容写到指定的文件中
    Redirect          用于设置页面重定向

      Response对象的Write方法可以说是我们用的最多的语句,它主要用来在页面上输出文本,如:


    Response.Write("Hello, World!")


      需要注意的是,在ASP中,Response对象的write方法可以直接写输出文本,不需要些括号,如:Response.Write"Hello,World!",而在ASP.NET中,括号是必须要的,这也是ASP开发人员在学习ASP.NET时最容易犯错误的地方。

      此外,我们还可以将Response.Write语句放在脚本内的函数或方法中使用。例如,下面的范例在VB脚本中定义了一个方法,调用Response.Write方法来输出字符串参数。

    例:
    <script language = "vb" runat ="server">
      Sub PrintText(ByVal Str As String)
        response.write("下面是输出的文本:")
        response.write(Str)
      End Sub
    </script>

    <%PrintText(Now.ToString)%>

      在程序设计时,通常需要在不同的页面之间跳转,从而满足不同业务的流程需要,此时,我们可以使用Response.Write方法来实现页面的跳转功能,如

    Response.Redirect("Login.apsx")

      值得注意的是,使用Redirect方法将会消耗大量的服务器CPU时间。因此,如果不是特别需要的话,最好不要不加限制的使用它。

      ASP.NET提供了缓冲机制,允许将数据首先保存在服务器的缓冲区域。这样就不用每次访问时都重新执行文件,而只从缓存中取出即可,从而加快页面处理的速度和服务器的响应时间。Response对象可以通过Buffer和BufferOutPut属性来设置是否缓冲要输出到客户端的数据,如:

    Response.BufferOutPut = "true"

      上面的数据设置了缓冲数据为真,这意味着完成对整个页面的处理之后才向客户端输出。Buffer和BufferOutPut实现的功能是一样的,提供Buffer属性仅仅是为了与ASP兼容,而通常在ASP.NET中使用的是BufferOutPut属性。

      此外,ASP.NET还提供了两个方法,即Clear和Flush来处理有关缓冲的内容,使用这两个方法的前提条件是BufferOutPut属性或Buffer属性已经被设置为True。其中Clear方法用于清除缓冲区中的所有HTML输出,Flush方法用于将当前缓冲区的内容强制输出到客户端。

      与Request对象一样,在Response对象中也包含了一个cookies集合,该集合包含一些cookie对象。该对象是在服务器上创建的,并以Set-Cookie表头的形式传送到客户端。

    三、Server对象

      Server对象对应于ASP.NET中的HttpServerUtility类,它允许方法服务器本身,获取有关服务器的相关信息。

    Server对象的常用属性和方法如下:

    MachineName属性         用于获取服务器的计算机名称
    ScriptTime属性         用于设置或获取请求服务器的超时时间,单位为秒
    CreateObject方法        用于创建COM对象的一个服务器实例
    Execute方法           用于使用另一页面来执行当前请求
    Transfer方法          用于终止当前页的执行,并开始执行当前请求
    HtmlDecode方法         用于对要显示在浏览器中的字符进行解码
    HtmlEncode方法         用于对要显示在浏览器中的字符进行编码
    UrlDecode方法         对字符串进行解码,该字符串为了HTTP传输而编码并在URL中发送到服务器
    UrlEncode方法         用于编码字符串,以便通过URL从web服务器到客户端执行可靠的HTTP传输
    UrlPathEncode方法       对URL字符串的路径执行URL编码,返回该编码字符串
    MapPath方法          返回与web服务区上的虚拟目录对应的物理路径
    ToString方法          以字符串的形式返回对象的信息

      HtmlEncode是Server对象中用得较多的一个方法,它用于对显示在浏览器中的字符串进行编码。首先看下面这条语句:

    Response.Write("<center><b>ASP.NET</b></center>")

      其作用是在浏览器中局中并加粗显示“ASP.NET”。但是如果我们需要将“<center><b>ASP.NET</b></center>”作为一个完整的字符串显示在浏览器中,则通过HtmlEncode方法可以轻松的实现,如:

    Response.Write("Server.HtmlEncode(<center><b>ASP.NET</b></center>)")

      事实上,经过HtmlEncode编码后,字符串已经转换为:

    &lt;center&rt;&lt;b&rt;ASP.NET&lt;/b&rt;&lt;/center&rt;

    HtmlDecode方法的作用与HtmlEncode方法的作用相反,它将HTML编码的代码进行解码,恢复代码的本来面目。


    四、Application对象


      Application对象对应于ASP.NET中的HttpApplicationState类,它主要用来在整个应用程序中共享信息。Application对象可以直接在应用程序状态中存储变量和对象,这些变量和对象在整个应用程序执行的所有ASP.NET页面中都是可用的,其值也相同。例如,我们用的最多的保存页面的访问计数即可通过Application对象实现。

    Application对象的相关属性和方法如下:

    Allkeys属性         获取应用程序状态集合中的对象键
    Contents属性        获取应用程序状态集合的对象引用
    Count属性          获取所含对象的总数
    StaticObjects属性      获取以<boject>标记的且其范围设置为Application的所有对象
    Add方法           添加一个对象到应用程序状态集合中
    Lock方法           锁定应用程序状态对象以保证并发访问
    UnLock方法          取消锁定
    Clear方法          从应用程序状态集合中移除所有对象
    Remove方法         从应用程序状态集合中移除指定对象
    RemoveAll方法        从应用程序状态集合中移除所有对象

    例如,下面的语句在应用程序状态内创建一个新的变量,其名称为“AppVarName”,值为“VarValue”:

    Application("AppvarNAame") = "VarValue"

      在一个ASP.NET页面执行这个语句后,在同一个应用程序的其他页面都可以直接获取AppVarName的值。要读取应用程序状态变量的值,可以使用如下语句:

    Response.Write(Application("AppVarName"))

      它在页面上显示应用程序状态变量的值。
      当然,我们也可以将一个对象保存在应用程序状态变量中。例如,讲一个DataTable对象添加到应用程序状态中,如下所示:

    Application("DataTable") = dtbDataTable

      实际上,应用程序状态变量可以说是ASP.NET应用程序的全局变量,它一直保存到应用程序被关闭或者现实的删除此变量时。因此,在应用程序状态中添加复杂对象时,要考虑到应用程序的内存开销。

    要从应用程序状态中移除特定的变量,可使用Remove方法。例如:

    Application.Remove("AppVarName")

      执行此语句后,应用程序状态中将不再存在AppVarName变量。
      若要移除应用程序状态中所有变量。可使用Clear或者RemoveAll方法。例如:

    Application.Removeall()

    或者

    Application.Clear()

    五、Session对象

      Session对象对应于HttpSessionState类,它主要用于保存与当前用户会话相关的信息。与Application对象不同的是,Session对象与用户相关联。对于同一个用户,在应用程序内不同的页面访问同一个Session变量,其值相同;而不同的用户拥有不同的Session变量,其内容不同。对于每一个Session对象,都有一个SessionID来唯一标识它。

    Session对象的相关属性和方法如下:

    SessionID属性        用于表示会话的标识ID
    Count属性          当前会话状态包含的项数
    Mode属性          获取当前会话的模式
    TimeOut属性         会话状态的过期时间,以分钟为单位
    Abandon属性         取消当前会话
    Clear方法          清除当前会话中的所有值
    RemoveAll方法        清除当前会话中的所有值
    Remove方法         清除当前会话中的指定值

    六、Cookie对象

      Cookie对象对应于HttpCookie类,它主要用来在用户的浏览器上存储小块儿的信息,同时也可用来处理与当前用户会话有关的信息。

    Cookie对象的相关属性和方法如下:

    Name属性              用于获取Cookie的名字
    Value属性              用于设置或获取Cookie的值
    Domain属性             用于设置或获取与Cookie相关的域,默认为接收到该Cookie的主机
    Expires属性             用于设置或获取Cookie的过期时间
    Values属性             用于获取字典Cookie的键值
    HasKeys属性             用于判断是否包含键,即是否为字典Cookie
    Path属性              用于获取或设置与当前Cookie一起传输的虚拟路径,通常保留其默认值
    Secure属性             表示Cookie是否通过保密传输,默认为False

      Cookie对象可以分为两种类型,即会话Cookie(SessionCookie)和持久性Cookie,前者是临时的Cookie,一旦会话状态结束便会自动的消失;后者则具有确定的过期时间。一般来说,持久性Cookie在用户的计算机上都是以文本文件的形似存储的。

      为创建一个Cookie,首先要初始化一个HttpCookie对象实例,然后将其添加到Response的Cookie集合中,例如:

    Dim objCookie As New HttpCookie("TestCookie","会话Cookie")
    Response.Cookikes.Add(objCookie)

      这里添加的是一个会话Cookie,它被添加到浏览器的会话内存中,但不会被写入到用户的硬盘文件中。一旦用户关闭浏览器,该Cookie对象便会消失。

      如果要创建一个持久性Cookie,则只需在创建时为其指定一个过期时间即可。这样它就会以文本文件的形式保存到用户的计算机中,直到到达指定的时间。例如:


    Dim objCookie As New HttpCookie("TestCookie","会话Cookie")
    objCookie.Expires = "#10/1/2012#"
    Response.Cookikes.Add(objCookie)

      如果需要获取一个Cookie值,则可访问Request对象的Cookie集合,例如,以下将遍历并显示当前Request对象中的所有Cookie:

    Dim CookieName As String
    For Each CookieName In Request.Cookies
    Response.Write("Cookie名称:" & CookieName& ",Cookie内容:" &Request.Cookies(CookieName).Value) &"<br />"

      值得注意的是,Cookie只能保存字符串信息,当保存的是整数值时,应先将其转换为字符串。

  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/shuzhengyi/p/1979907.html
Copyright © 2011-2022 走看看