zoukankan      html  css  js  c++  java
  • ASP.NET内核几大对象、ASP.NET核心知识(6)

    描述

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

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

    1)HttpContext

    2)HttpRequest

    3)HttpResponse

    4)context. Server

    HttpContext

    1.描述 

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

    2.截图

    clipboard

    3.对HttpContext.Current的说明

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

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

    HttpRequest

    1.描述

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

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

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

    2.截图 

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

    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 + " ");

      }

     

    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对象。

    clipboard[1]

    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传递的时候要编码

     

     


  • 相关阅读:
    Struts2 与 Spring MVC
    RESTful Web Service
    [找程序员代写推荐]spring Scurity终于测试OK了,复杂的功能还待深入研究!发布出来一起探讨吧!
    [找程序员代写推荐]1、拖地要30分钟, 只有一个拖把 2、擦窗要30分钟, 只有一块抹布 3、切菜要30分钟, 只有一把刀 假设只有以上工具才能完成工作时,完成此三件 工作需要两个人工作多长时间?
    [原]精简高效CSS系列之二——浮动float
    [找程序员代写推荐]struts2验证+拦截器+国际化+下载excle文档+struts2二级联动+OGNL表达试+ssh集成部分代码, 项目下载、
    [原]精简高效CSS系列之一——CSS样式用法
    [原]反对网抄,没有规则可以创建目标&quot;install&quot; 靠谱解答
    如何鉴别程序抄袭c语言程序代写
    [原]CSS+DIV总结
  • 原文地址:https://www.cnblogs.com/mcad/p/4345744.html
Copyright © 2011-2022 走看看