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("<img> <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"/>
元素呈现 。