描述
其实今天的博文,是一般处理程序的后续部分,理论上应该叫一般处理程序()。但是觉得文章标题后面的系列名已经有个数字,再加一个2有点怪。
这篇博文主要介绍一下几个对象。
)HttpContext
)HttpRequest
)HttpResponse
)context. Server
HttpContext
.描述
和本次请求相关对象的一个上下文对象,一般通过它获取其他对象。
.截图
clipboard
.对HttpContext.Current的说明
在HttpHandler的ProcessRequest方法中可以通过方法的context参数获得对象。在其他地方可以通过HttpContext.Current拿到当前请求堆栈中的HttpContext对象,但是还是建议通过参数传递,这样思路清晰。
(*)在子线程是无法获得HttpContext.Current
HttpRequest
.描述
context. Request["username"]; 通过这种方式,能够得到一个HttpRequest对象。
HttpRequest对象描述了,关于请求的相关信息,
我们可以通过这个对象,拿到我们想要的请求数据。
.截图
通过Visual Studio可以看到 通过context. Request可以获得到一个HttpRequest对象
j[}pnw8_25db
.获取请求数据的几种方式
)context.Request.Form["username"]获取Post请求中的值,
)context.Request.QueryString["username"]获取Get请求中的值。
(PS:“xxx?name=xx&age=”叫做QueryString请求参数 )
)context.Request[" username "] 通吃
顺序从QueryString、Form、Cookies、 ServerVariables中找,第一个找到的就是(反编译验证)
虽然使用Request[]的这种方式获取请求数据,效率会略有下降(几乎可忽略不计),但使用起来真心方便啊。
我推荐使用这个!
.关于请求数据的类型
请求参数获取的都是String类型数据,因为Http协议就是文本。
所以获取请求来的数据,大多需要数据转换。
.通过HttpRequest对象获取一些请求信息
)浏览器
context.Request.Browser.Browser
)操作系统信息
context.Request.Browser.Platform
)浏览器内核版本
context.Request.Browser.Version )请求报文头
//Request.Headers请求报文头
for (int i = ; 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");
} )获取请求方式 (GET or POST?)
context.Request.HttpMethod
)获取请求页面文件路径(相对)
context.Request.Path
)获取请求参数
context.Request.QueryString
)被请求的文件的服务器上的物理路径
context.Request.PhysicalPath
)获取用户代理
context.Request.UserAgent
)客户端的IP地址
context.Request.UserHostAddress
)获取客户端上次请求的url的有关信息
context.Request.UrlReferrer
)浏览器支持什么语言
context.Request.UserLanguages)
PS: 对对没有错,看着眼熟就对了。这些请求都在http协议里头详细介绍过!
HttpRequest获取的所有信息都来自http请求报文。
HttpResponse
.简介
HttpResponse是对响应报文进行设置的一个对象。
通过context. Response 能够得到HttpResponse对象。
.截图
通过Visual Studio 可以观察到context. Response会得到一个HttpResponse对象。
clipboard[]
.重定向
Redirect()重定向;
Redirect是向浏览器发回302重定向,是通知浏览器“请重新访问url这个网址”,这个过程经历了服务器通知浏览器“请重新访问url这个网址”和浏览器接到命令访问新网址的过程。
使用报文工具查看整个响应过程的Http报文。用Redirect因为是浏览器自己去重新访问新网址的,所以在地址栏中是可以看到网址的变化的。
.End()
End()将当前所有缓冲的输出发送到客户端,停止该页的执行。通过对End()进行try,发现是是抛出了异常。所以End()之后的代码就不会执行了。
context. Server
.描述
Server是一个HttpServerUtility类型的对象,不是一个类名
.MapPath
MapPath("~/a.htm")将虚拟路径(~代表项目根目录)转换为磁盘上的绝对路径,操作项目中的文件使用。
.HtmlEncode 和 HtmlDecode
HtmlEncode、 HtmlDecode:HTML编码解码。Encode为的是把特殊字符转义显示
.UrlEncode和 UrlDecode
UrlEncode、 UrlDecode:url编码解码。汉字、特殊字符(空格、尖括号)等通过Url传递的时候要编码

来源:http://www.cnblogs.com/mcad/p/4345744.html

最新文章

  1. golang http服务器跨域问题解决
  2. Android 组件类继承关系结构图
  3. 简明python教程 --C++程序员的视角(四):容器类型(字符串、元组、列表、字典)和参考
  4. 使用dropbox 同步任意文件夹(MAC)
  5. VS2005下开发PPC2003和WM50编译器一些设置
  6. 授权(Authorization)
  7. JS浏览器对象-window对象
  8. Python之matplotlib学习(三)
  9. [国嵌攻略][044][初始化Bss段]
  10. 理解Device Tree Usage
  11. Pandas系列(四)-文本数据处理
  12. 第8章 IO库 自我综合练习
  13. 使用adb命令通过IP地址连接手机
  14. typeof 与instanceof
  15. 安装apache 后,找不到服务,解决办法
  16. linux:基本概念和操作
  17. python 函数参数介绍
  18. 利用PHPExcel实现数据保存到excel文件
  19. java基础07 循环结构
  20. Python之装饰器、迭代器和生成器

热门文章

  1. [LeetCode][Python]String to Integer (atoi)
  2. Linux-storage-stack-diagram
  3. 使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)
  4. html5 绘制集合图形
  5. GridView隔行样式
  6. 怎样在UICollectionView中添加Header和footer
  7. ##DAY9 UITabBarController
  8. C++_前置声明
  9. IOS基础:深入理解Objective-c中@class的含义
  10. 0. chromium源代码分析 - 序