描述
其实今天的博文,是一般处理程序的后续部分,理论上应该叫一般处理程序()。但是觉得文章标题后面的系列名已经有个数字,再加一个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

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

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

    这篇博文主要介绍一下几个对象. 1)HttpContext 2)HttpRequest 3)HttpResponse 4)context. Server 5)context.Session HttpC ...

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

    本文的学习流程是这样安排的. 一个简单的GDI小案例 1.说明 如果你想思考如何生成验证码,那么您第一个要解决的问题,一定是.NET动态生成图片问题. //GDI:.Net程序中进行绘图的一些类. 2 ...

  3. 18第一章 ASP.Net内建对象

    第一章        ASP.Net内建对象 第一章        ASP.Net内建对象 ASP.Net为保持用户的数据和信息,内建了许多对象,包括Application.Response.Requ ...

  4. Asp.net有三大对象:HttpContext, HttpRequest, HttpResponse

    一.Asp.net有三大对象:HttpContext, HttpRequest, HttpResponse.命名空间:  System.Web程序集:  System.Web(在 System.Web ...

  5. Cookie详解、ASP.NET核心知识(7)

    无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...

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

    为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...

  7. ASP.NET中application对象

    ASP.NET中application对象的使用. Application对象的应用  1.使用Application对象保存信息  (1).使用Application对象保存信息  Applicat ...

  8. 初识 Asp.Net内置对象之Response对象

    Response对象 Respose对象用于将数据从服务器发送回浏览器.它允许将数据作为请求的结果发送到浏览器,并提供有光响应的信息,可以用来在页面中输入数据,在页面中跳转,还可以传递各个页面的参数, ...

  9. ASP.NET 内置对象涉略

    一.ASP.NET中内置的常用对象的介绍 本文列举了ASP.NET 的八个内置对象,其中前五个是比较常用的. 1.Response Response 对象用于从服务器向用户发送输出的结果. Write ...

随机推荐

  1. ubuntu下vim与系统剪切板互相拷贝

    1.install xclip sudo apt-get install xclip 2. install gvim sudo apt-get install vim-gnome 此时使用 “+ 寄存 ...

  2. ldap理论属于概念缩略词

    Standalone LDAP Daemon, slapd(standalone lightweight access protocol) ldap 389 default listener port ...

  3. VC6.0调试大全

    VC调试方法大全 一.调试基础 调试快捷键 F5: 开始调试 Shift+F5: 停止调试 F10:   调试到下一句,这里是单步跟踪  F11:   调试到下一句,跟进函数内部 Shift+F11: ...

  4. Android 模拟系统事件(三)

    简介 Android系统是基于Linux内核的,而Linux内核继承和兼容了丰富的Unix系统进程间通信(IPC)机制.Binder其实也不是Android提出来的一套新的进程间通信机制,它是基于Op ...

  5. 枚举与剪枝_观察算式(比标准答案还要牛B)

    观察算式 观察以下的算式: △△△ * △△ = △△△△ 某3位数乘以2位数,结果为4位数 要求:在9个△所代表的数字中.1~9的数字恰好每一个出现1次. 暴力破解代码: package lianx ...

  6. LeetCode第四题,Add Two Numbers

    题目原文: You are given two linked lists representing two non-negative numbers. The digits are stored in ...

  7. 今天,Java编程周末提高班(第一期)正式结束

    Java编程周末提高班(第一期),走过了近两个月历程,一共同拥有68人次学生周末到老师家进行Java学习与交流.近距离的和一群年轻的学习接触,收获非常多,特别是对以后教学的改进.在学习的闲暇.大家自己 ...

  8. tomcat 产生heapdump文件配置

    连接地址:http://www.blogjava.net/zhanglongsr/articles/396607.html

  9. Duff 装置中case情况越多性能越好

    猜想:Duff装置再循环里面,直接调用的方法越多(也就是case的数量比较多),性能相对越好 ???!!! 我们基于Duff装置来做进一步的测试. 然后分别添加两个新的函数,一个函数式 case有4种 ...

  10. [编程题] 最大的LeftMax与rightMax之差绝对值

    [编程题] 最大的LeftMax与rightMax之差绝对值 给定一个长度为N的整型数组arr,可以划分成左右两个部分: 左部分arr[0..K],右部分arr[K+1..arr.length-1], ...