ASP.NET内核几大对象、ASP.NET核心知识(6)

描述

其实今天的博文,是一般处理程序的后续部分,理论上应该叫一般处理程序(2)。但是觉得文章标题后面的系列名已经有个数字,再加一个2有点怪。

这篇博文主要介绍一下几个对象。

1)HttpContext

2)HttpRequest

3)HttpResponse

4)context. Server

HttpContext

1.描述

和本次请求相关对象的一个上下文对象,一般通过它获取其他对象。

2.截图

3.对HttpContext.Current的说明

在HttpHandler的ProcessRequest方法中可以通过方法的context参数获得对象。在其他地方可以通过HttpContext.Current拿到当前请求堆栈中的HttpContext对象,但是还是建议通过参数传递,这样思路清晰。

(*)在子线程是无法获得HttpContext.Current

HttpRequest

1.描述

context. Request["username"]; 通过这种方式,能够得到一个HttpRequest对象。

HttpRequest对象描述了,关于请求的相关信息,

我们可以通过这个对象,拿到我们想要的请求数据。

2.截图

通过Visual Studio可以看到 通过context. Request可以获得到一个HttpRequest对象

3.获取请求数据的几种方式

1)context.Request.Form["username"]获取Post请求中的值,

2)context.Request.QueryString["username"]获取Get请求中的值。

(PS:“xxx?name=xx&age=8”叫做QueryString请求参数 )

3)context.Request[" username "] 通吃

顺序从QueryString、Form、Cookies、 ServerVariables中找,第一个找到的就是(反编译验证)

虽然使用Request[]的这种方式获取请求数据,效率会略有下降(几乎可忽略不计),但使用起来真心方便啊。

我推荐使用这个!

4.关于请求数据的类型

请求参数获取的都是String类型数据,因为Http协议就是文本。

所以获取请求来的数据,大多需要数据转换。

5.通过HttpRequest对象获取一些请求信息

1)浏览器

context.Request.Browser.Browser

2)操作系统信息

context.Request.Browser.Platform

3)浏览器内核版本

context.Request.Browser.Version

4)请求报文头

//Request.Headers请求报文头

for (int i = 0; i < context.Request.Headers.AllKeys.Length; i++)

{

string key = context.Request.Headers.AllKeys[i];

string value = context.Request.Headers[key];

context.Response.Write(key + "=" + value + "\n");

}

5)获取请求方式 (GET   or   POST?)

context.Request.HttpMethod

6)获取请求页面文件路径(相对)

context.Request.Path

7)获取请求参数

context.Request.QueryString

8)被请求的文件的服务器上的物理路径

context.Request.PhysicalPath

9)获取用户代理

context.Request.UserAgent

10)客户端的IP地址

context.Request.UserHostAddress

11)获取客户端上次请求的url的有关信息

context.Request.UrlReferrer

12)浏览器支持什么语言

context.Request.UserLanguages)

PS: 对对没有错,看着眼熟就对了。这些请求都在http协议里头详细介绍过!

HttpRequest获取的所有信息都来自http请求报文。

HttpResponse

1.简介

HttpResponse是对响应报文进行设置的一个对象。

通过context. Response 能够得到HttpResponse对象。

2.截图

通过Visual Studio 可以观察到context. Response会得到一个HttpResponse对象。

3.重定向

Redirect()重定向;

Redirect是向浏览器发回302重定向,是通知浏览器“请重新访问url这个网址”,这个过程经历了服务器通知浏览器“请重新访问url这个网址”和浏览器接到命令访问新网址的过程。

使用报文工具查看整个响应过程的Http报文。用Redirect因为是浏览器自己去重新访问新网址的,所以在地址栏中是可以看到网址的变化的。

4.End()

End()将当前所有缓冲的输出发送到客户端,停止该页的执行。通过对End()进行try,发现是是抛出了异常。所以End()之后的代码就不会执行了。

context. Server

1.描述

Server是一个HttpServerUtility类型的对象,不是一个类名

2.MapPath

MapPath("~/a.htm")将虚拟路径(~代表项目根目录)转换为磁盘上的绝对路径,操作项目中的文件使用。

3.HtmlEncode 和 HtmlDecode

HtmlEncode、 HtmlDecode:HTML编码解码。Encode为的是把特殊字符转义显示

4.UrlEncode和 UrlDecode

UrlEncode、 UrlDecode:url编码解码。汉字、特殊字符(空格、尖括号)等通过Url传递的时候要编码

时间: 2024-10-12 13:36:39

ASP.NET内核几大对象、ASP.NET核心知识(6)的相关文章

ASP.NET内核几大对象、ASP.NET核心知识(7)--转载

本文的学习流程是这样安排的. 一个简单的GDI小案例 1.说明 如果你想思考如何生成验证码,那么您第一个要解决的问题,一定是.NET动态生成图片问题. //GDI:.Net程序中进行绘图的一些类. 2.代码 1 //这段代码开始前,要添加System.Drawing的引用. 2 //创建一个尺寸为500*500的内存图片 3 using (Bitmap bmp = new Bitmap(500, 500)) 4 //得到图片的画布 5 using (Graphics g = Graphics.F

asp.net内置对象

转:http://www.cnblogs.com/MyBeN/archive/2011/03/23/1992591.html (1)简述ASP.NET内置对象. 答:ASP.NET提供了内置对象有Page.Request.Response.Application.Session.Server.Mail和Cookies.这些对象使用户更容易收集通过浏览器请求发送的信息.响应浏览器以及存储用户信息,以实现其他特定的状态管理和页面信息的传递. (2)简述Response对象. 答:Response对象

asp.net内置对象session和cookie

1.各个机器的session对象不同,不同浏览器之间不通用(换个浏览器,是个新的session). 2.session状态对象起始于网页打开,终止于网页关闭,生命周期有限. 3.关闭浏览器/超时的情况下,session对象即被销毁,不要放太多/太大的对象在session. 4.Web应用程序在传统意义上无状态,需要使用内置对象进行客户端状态的保存. 5.session对象和Application对象存储在服务端,cookie对象存储在客户端. 6.session对象适用于安全性相比之下较高的场合

ASP.NET中Server对象

1.asp.net中常见对象: Request:服务器读取浏览器请求中的信息. Response:将服务器中的信息发送给浏览器. Server:获取请求服务器的相关信息. Application:应用程序级对象,多用户之间可以共享数据. Session:会话,用户通过网址访问服务器时会话启动. 下面的图可以简单理解为:我们发布的服务器为Server对象,在服务器上运行的web程序为Application对象,每个客户端对web程序的一个访问就是一个Session 2.Global.aspx 初始

asp.net内置对象Server

1.Server是Context的一个属性,是HttpServerUtility类的一个对象. 2.Server.HtmlDecode(),Server.HtmlEncode(),Server.UrlEncode(),Server.UrlDecode()是对HttpUtility类中相应方法的一个代理调用.有的时候很难拿到Server对象,使用HttpUtility. 3.Server.Transfer(path)内部重定向请求,Server.Transfer("hellow.aspx"

网络基础知识、ASP.NET 核心知识(1)*

为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发人员,你所开发的软件产品最终是要在网络上运行的.这就像一个生产商,要生产供给东北地区的产品,而生产商对东北的天气.地理.人文毫无了解.生产商的产品肯定是不可用的,或者低端的!产品质量不好,那是自然的.产品质量好,那算你点儿高.那么作为ASP.NET开发人员,如果一点不懂http协议.不晓得Ajax.

ASP.NET 内置对象

内置对象:1.Response - 响应请求对象 Response.Redirect("Default2.aspx"); //页面重定向到Default2.aspx Response.Write("<script>window.open('Default2.aspx');</script>");//在页面中写入一句话并显示在页面上,这里写入了一个js方法,里面写入了一句打开新页面的语句,同样执行打开新页面,也就是Response.Write,

学习ASP.NET MVC(四)——我的第一个ASP.NET MVC 实体对象

今天我将根据数据库中的表结构添加一些类.这些类将成为这个ASP.NET MVC应用程序中"模型"的一部分.       我们使用Entity Framework(实体框架)来定义和使用这些模型类,并且访问数据库.实体框架 (EF) 是一种对象关系映射机制,支持 .NET 开发人员使用特定对象来处理关系数据.它消除了开发人员通常需要编写大部分数据访问代码的工作,所以也称为代码优先开发模式.使用实体框架 ,可以将自定义数据类与数据模型一起使用,而无需对数据类本身进行任何修改. 这意味着可以

asp.net 内置对象Request和Response

Request 1.Request.AppRelativeCurrentExecutionFilePath,获取当前执行请求相对于应用根目录的虚拟路径,以~开头,比如"~Handler.ashx". 2.Request.PhysicalApplicationPath,获取当前应用的物理路径,比如D:\我的文档\VisualStudio 2012\WebSites\WebSite\ 3.Request.PhysicalPath,获取当前请求的物理路径.比如D:\我的文档\VisualSt