ASP.NET之HTTP属性、方法讲解

Request对象

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

集合 描述
ClientCertificate 包含了存储在客户证书中的所有的字段值。
Cookies 包含了 HTTP 请求中发送的所有的 cookie 值。
Form 包含了使用 post 方法由表单发送的所有的表单(输入)值。
QueryString 包含了 HTTP 查询字符串中所有的变量值。
ServerVariables 包含了所有的服务器变量值。

集合意味着Request对象里还有对象,这些对象里又有各自属性、方法,如取值Request.Cookies(“firstname”) 。

属性 描述
TotalBytes 返回在请求正文中客户端发送的字节总数。

属性意味着只能Request.TotalBytes

方法 描述
BinaryRead 取回作为 post 请求的一部分而从客户端发送至服务器的数据,并把它存储在一个安全的数组中。
int a=Request.TotalBytes
int b=Request.BinaryRead(a)

常用实例

HTML 表单实例:

<form runat="server" id="login">
   <input type="text" name="username">
   <input type="text" name="password">
   <input type="submit" value="Submit">
</form>

GET请求:

  • Request.QueryString 命令用于收集使用 method=“get” 的表单中的值。
  • 使用 GET 方法从表单传送的信息对所有的用户都是可见的(出现在浏览器的地址栏),并且对所发送信息的量也有限制。

如果用户在上面的 HTML 表单中输入 “admin” 和 “123456”,发送至服务器的 URL 会类似这样:

http://localhost?username=admin&password=123456

C#后端接收:

string username = Request.QueryString["username"];
string password = Request.QueryString["password"];

POST 请求:

  • Request.Form 命令用于收集使用 method=“post” 的表单中的值。
  • 使用 POST 方法从表单传送的信息对用户是不可见的,并且对所发送信息的量没有限制。

如果用户在上面的 HTML 表单中输入 “Bill” 和 “Gates”,发送至服务器的 URL 会类似这样:

http://localhost

C#后端接收:

string username = Request.Form("username");
string password = Request.Form("password");

Response对象

ASP Response 对象用于从服务器向用户发送输出的结果。它的集合、属性和方法描述如下:

集合 描述
Cookies 设置 cookie 的值。如果 cookie 不存在,则创建 cookie ,并设置指定的值。
属性 描述
Buffer 规定是否缓冲页面的输出。
CacheControl 设置代理服务器是否可以缓存由 ASP 产生的输出。
Charset 将字符集的名称追加到 Response 对象中的 content-type 报头。
ContentType 设置 Response 对象的 HTTP 内容类型。
Expires 设置页面在失效前的浏览器缓存时间(分钟)。
ExpiresAbsolute 设置浏览器上页面缓存失效的日期和时间。
IsClientConnected 指示客户端是否已从服务器断开。
Pics 向 response 报头的 PICS 标签追加值。
Status 规定由服务器返回的状态行的值。
方法 描述
AddHeader 向 HTTP 响应添加新的 HTTP 报头和值。
AppendToLog 向服务器日志条目的末端添加字符串。
BinaryWrite 在没有任何字符转换的情况下直接向输出写数据。
Clear 清除已缓冲的 HTML 输出。
End 停止处理脚本,并返回当前的结果。
Flush 立即发送已缓冲的 HTML 输出。
Redirect 把用户重定向到一个不同的 URL。
Write 向输出写指定的字符串。

常用实例

重定向 URL。

Response.Redirect("http://localhost/2")

向页面输出写一段指定的字符串。

Response.Write( "Hello World")

停止对脚本的处理,并返回当前的结果。

Response.End

修改由服务器返回的状态行。

response.Status="404"

设置 HTTP 内容类型。

response.ContentType="text/HTML"

输出文件流。

response.WriteFile('test.txt')

Server对象

Server对象定义了一个与Web服务器相关的类,提供对服务器上的方法和属性的访问,用于访问服务器上的资源。

属性 描述
ScriptTimeout 设置或返回在一段脚本终止前它所能运行时间(秒)的最大值。
方法 描述
CreateObject 创建对象的实例。
Execute 从另一个 ASP 文件中执行一个 ASP 文件。
GetLastError() 返回可描述已发生错误状态的 ASPError 对象。
HTMLEncode 把 HTML 编码应用到某个指定的字符串。
MapPath 把一个指定的路径映射到一个物理路径。
Transfer 把一个 ASP 文件中创建的所有信息发送(传输)到另一个 ASP 文件。
URLEncode 把 URL 编码规则应用到指定的字符串。

常用实例

对一段指定的字符串应用 HTML 编码。

Server.HTMLEncode("<img>")
//&lt;img&gt;

可把指定的路径映射到服务器上相应的物理路径上。

Server.MapPath("test.html")

把 URL 编码。

Server.URLEncode("https://www.runoob.com")
//https%3A%2F%2Fwww%2Erunoob%2Ecom

把 URL 解码。

Server.URLDecode("https%3A%2F%2Fwww%2Erunoob%2Ecom")
//https://www.runoob.com

状态管理

状态管理表示进行对存储结构的操作。其实就是把Response对象抽离出来讲解。这里我们综合例子来讲。

Cookies

设置一小时过期的Cookies:

Response.Cookies("firstname")="Alex" 
Response.Cookies("firstname").expires = DateAdd("h", 1, Now())
  • 这里的Cookies(“firstname”)括号内的参数就是设置cookie 的名称。
  • 等于后面表示要对Cookies(“firstname”)进行对赋值操作,cookie 的值。
  • expires是设置cookie 的失效日期。如果没有规定日期,cookie 会在 session 结束时失效。

Session

Cookies与Session的区别在于前者永久保留数据在浏览器里,除非过期时间到,后者关掉浏览器即消失。

//设置值
Session("name")="Hege"
//设置5分钟过期
Session.Timeout=5
//获取全部值、Contents集合
Session.Contents("name")
Session.Contents(i)
//获取Session.Contents个数
Session.Contents.Count
//立即结束
Session.Abandon
//删除
Session.Contents.Remove("test2")

Application

Application 对象用于存储和访问来自任何页面的变量,类似于 Session 对象。不同之处在于,所有的用户分享一个 Application 对象,而 Session 对象和用户的关系是一一对应的。

Application 对象存有会被应用程序中的许多页面使用的信息(比如数据库连接信息)。可以从任何的页面访问这些信息。同时您也可以在一个地方改变这些信息,随后这些改变会自动反映在所有的页面上。

下面我们来做一个统计网站的访问量测试。

首先创建全局应用程序类,Global.asax文件。

然后在新会话启动时进行以下代码:

Application.Lock
Response.Write('')
Application.Unlock

然后在新会话结束后进行以下代码:

Application.Lock;
Application['count'] = (int)Application['count'] - 1;
Application.Unlock;

然后在一个aspx文件的后端cs文件中输入统计代码:

Label.Text = "您是网站的第" + Application['count'] + “位用户”;

ViewState

在经典 ASP 中,当一个表单被提交时,所有的表单值都会被清空。假设您提交了一个带有大量信息的表单,而服务器返回了一个错误。您不得不回到表单改正信息。您点击返回按钮,然后发生了什么…所有表单值都被清空了,您不得不重新开始所有的一切!站点没有维持您的 ViewState。

在 ASP .NET 中,当一个表单被提交时,表单会连同表单值一起出现在浏览器窗口中。

维持 ViewState 是 ASP.NET Web Forms 的默认设置。EnableViewState属性。

禁用:

<asp:TextBox ID="TextBox1" runat="server" EnableViewState="false"></asp:TextBox>

HiddenField

增加HiddenField,其实是为了让整个状态管理机制的应用程度更加全方面。因为不管是ViewState、Cookie还是Session,都有其失效的时候,比如用户因某种需求设置ViewState为false,或环境条件限制使用Cookie,或用户长时间没有动作导致Session过期等等,那这个时候HiddenField无疑是最佳选择。

HiddenField控件的作用简单的说是用于存储需要在向服务器的发送间保持的值。他作为<input type= "hidden"/>元素呈现 。

发布了8 篇原创文章 · 获赞 4 · 访问量 642

猜你喜欢

转载自blog.csdn.net/qq_30871823/article/details/105469293
今日推荐