ASP.NET内核几大对象、ASP.NET核心知识(6)
- 描述
- 其实今天的博文,是一般处理程序的后续部分,理论上应该叫一般处理程序()。但是觉得文章标题后面的系列名已经有个数字,再加一个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)的更多相关文章
- ASP.NET内核几大对象、ASP.NET核心知识(6)--转载
这篇博文主要介绍一下几个对象. 1)HttpContext 2)HttpRequest 3)HttpResponse 4)context. Server 5)context.Session HttpC ...
- ASP.NET内核几大对象、ASP.NET核心知识(7)--转载
本文的学习流程是这样安排的. 一个简单的GDI小案例 1.说明 如果你想思考如何生成验证码,那么您第一个要解决的问题,一定是.NET动态生成图片问题. //GDI:.Net程序中进行绘图的一些类. 2 ...
- 18第一章 ASP.Net内建对象
第一章 ASP.Net内建对象 第一章 ASP.Net内建对象 ASP.Net为保持用户的数据和信息,内建了许多对象,包括Application.Response.Requ ...
- Asp.net有三大对象:HttpContext, HttpRequest, HttpResponse
一.Asp.net有三大对象:HttpContext, HttpRequest, HttpResponse.命名空间: System.Web程序集: System.Web(在 System.Web ...
- Cookie详解、ASP.NET核心知识(7)
无状态的http协议 1.回顾http协议 Http协议是请求响应式的,有请求才有响应,是无状态的,不会记得上次和网页“发生了什么”. 关于http协议的这种特点,黑兔在前面的这三篇博文中进行了详细的 ...
- 网络基础知识、ASP.NET 核心知识(1)*
为什么要写网络? 我原本的计划是这样的,连续两天梳理ASP.NET开发的核心知识.说到这呢,有人问了.“不是说好了做ASP.NET笔记吗?为啥要写网络基础知识?是不是傻?” 原因是这样的.作为网站开发 ...
- ASP.NET中application对象
ASP.NET中application对象的使用. Application对象的应用 1.使用Application对象保存信息 (1).使用Application对象保存信息 Applicat ...
- 初识 Asp.Net内置对象之Response对象
Response对象 Respose对象用于将数据从服务器发送回浏览器.它允许将数据作为请求的结果发送到浏览器,并提供有光响应的信息,可以用来在页面中输入数据,在页面中跳转,还可以传递各个页面的参数, ...
- ASP.NET 内置对象涉略
一.ASP.NET中内置的常用对象的介绍 本文列举了ASP.NET 的八个内置对象,其中前五个是比较常用的. 1.Response Response 对象用于从服务器向用户发送输出的结果. Write ...
随机推荐
- #include <iostream>
1 static_assert 2 std::nothrow 3 std::ref() 4 std::string 1 static_assert 执行编译时断言检查 语法 static_assert ...
- 魔兽世界---屠夫(Just a Hook)
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- linux下Oracle11g RAC搭建(六)
linux下Oracle11g RAC搭建(六) 五.校验安装前的环境 root身份下完毕解压grid.database安装包 [grid@node1 soft]$ su - Password: [r ...
- Windows内核之进程的终止和子进程
1 进程终止的方法: <1>主线程的进入点函数返回(最好使用这种方法) <2>进程中的一个线程调用ExitProcesss函数(应该避免使用这样的方法). <3>还 ...
- md笔记——编程术语
thinkPython 读书笔记 本列表根据thinkPython中记录的大量编程术语 整理而来. 该书的重点不是教会你Python,而是培养读者用计算机科学家一样的思路来思考,设计,开发. 讲解了语 ...
- MailBee的简单使用
保存为Eml文件方法:MailMessage.SaveMessage() 读取文件方法(不知道是不是我用的问题,没找到直接读取Eml文件的方法): MsgConvert conv = new MsgC ...
- WCF契约之---服务契约 、数据契约、 消息契约
本篇博文只是简单说下WCF中的契约的种类.作用以及一些简单的代码示例.在WCF中契约分为服务契约.数据契约和消息契约.下面对这几种契约进行简单的介绍. 服务契约 服务契约描述了暴露给外部的类型(接口或 ...
- c++实现单例
单例宏: //单件定义宏 //------------------------------------- // 在头文件中申明 // DECLARE_SINGLEOBJ( CSampleClass ) ...
- C++_知识点_全局变量
全局变量 -全局变量即在函数之外定义的变量 -全局变量保存在静态存储区 注意: -全局变量只能声明和初始化 -全局变量不能进行运算.赋值(非初始化).调用函数 -否则会出现编译错误 -error: e ...
- 关于Android Launcher图标上面动态改变数字的实现
由于项目需要使用到类似小米应用商店的图标数字提示功能,谷歌百度了许多文章都没看到有真正意义上的实现(没有在国外网站上搜索),有实现在APP内部的一个ImageView上面更新数字的,当然这种太简单无非 ...