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 id="form1" runat="server" method="post">
        <asp:HiddenField ID="HiddenField1" runat="server" />
        <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox><br />
        <asp:TextBox ID="TextBox2" runat="server" ></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Aclick"/>
    </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.Status="404"

设置 HTTP 内容类型。

response.ContentType="text/HTML"

输出文字

Response.Write("Hello World");

输出文件流

Response.WriteFile("text.txt");

Server对象

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

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

常用实例

//输出浏览器信息
Response.Write(Request.ServerVariables["http_user_agent"] + "<br>");
Response.Write(Request.ServerVariables["remote_addr"] + "<br>");
Response.Write(Request.ServerVariables["remote_host"] + "<br>");
Response.Write(Request.ServerVariables["request_method"] + "<br>");
Response.Write(Request.ServerVariables["server_name"] + "<br>");
Response.Write(Request.ServerVariables["server_port"] + "<br>");
Response.Write(Request.ServerVariables["server_software"] + "<br>");
//输出文字
Response.Write("Hello World");
//输出文件流
Response.WriteFile("text.txt");
//MapPath 获取服务器的物理地址
Response.Write(Server.MapPath("index.aspx"));
//对字符串编码
Response.Write(Server.UrlEncode("https://www.runoob.com/asp/met-urlencode.html"));
//对字符串解码
Response.Write(Server.UrlDecode("https%3a%2f%2fwww.runoob.com%2fasp%2fmet-urlencode.html"));
//对一段指定的字符串应用 HTML 编码
Response.Write(Server.HtmlEncode("<img>"));
//对HTML进行解码
Response.Write(Server.HtmlDecode("&lt;img&gt; <img>"));

状态管理

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

Cookies

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

Session

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

//设置值
Session["name"]="Hege"
//获取值
Session["name"]
//设置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_Start初始化变量:

Application["count"] = 0;

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

Application.Lock();
Application['count'] = (int)Application['count'] + 1;
Application.UnLock();

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

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

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

Label1.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"/>元素呈现 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值