设为首页 加入收藏

TOP

如鹏网学习笔记(十四)ASP.NET(二)
2017-10-11 13:16:12 】 浏览:9498
Tags:学习 笔记 十四 ASP.NET
就是GET方式。

  数据格式:
    服务器文件名后跟着“?”,由于客户端可能向服务器端提交多个键值对,键值对之间用“&”进行分隔
    如果URL中有汉字、特殊符号等,则需要对URL进行编码

十三、HttpContext

  和本次请求相关对象的一个上下文对象,一般通过它去操作其它对象。
  如果在一般处理程序的ProcessRequest方法中,可以通过方法的context参数获得对象。
  在其他地方可以通过,HttpContext.Current拿到当前请求堆栈中的HttpContext对象
  (不建议,如果涉及到多线程,会无法获得。)


十四、HttpRequest

  请求的相关信息

  context.Request.Form["username"];获取Post请求中的值
  context.Request.QueryString["username"];获取get轻轻中的值

  context.Request["username"];  

  顺序着从QueryString、Form、Cookies、ServerVariable中找,第一个找到的就是

  地址栏中的 name=rupeng&age=8 叫做QueryString

  注意:
    请求参数返回的都是String类型数据,因为Http协议本身就是文本


十五、HttpResponse

  响应相关信息

  ContentType 设置响应的类型
  context.Response.ContentType = "text/html";

  OutputStream输出流


  context.Response.End(); 停止输出,本质是个异常,只是被freamwork给catch了

  Redirect();重定向

  向浏览器返回302重定向,是通知浏览器重新访问新网址,所以在地址栏中可以看到变化

十六、context.Server

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

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



  HtmlEncode、HttpDecode
    HTML编码与解码
    

    示例代码:

    

    List<T> list = new List<T>(); 想在html中显示就要对“<>”进行转义

 


    &lt; less than
    &gt; great than

    context.server.htmlencode("List<T> list = new List<T>()");可以直接进行转义


    UrlEncode、UrlDecode
      url编码与解码
      方式同上!!


十七、无状态的HTTP

  HTTP协议都是无状态的:
    无法保存上次和服务器交互的内容:每次HTTP请求到达aspnet都是创建一个新的HTTPhandler对象,来进行处理

  实现“记住上次操作”的方法:

    传递给浏览器一个值,让浏览器下次提交时上传这个值,来进行判断;

  如果要知道上一次的状态:
    一个方法是在对浏览器响应结束之前将状态信息保存到页面表单中,
    下次页面再向服务器发出请求的时候带上这些状态信息,
    这样服务器就能根据这些状态信息还原上次的状态了,类似于去看病的病历本。

十八、Cookie
  Cookie是和站点相关的:
  每次想服务器请求的时候,除了发送表单参数之外,还会将和站点相关的所有Cookie都提交给服务器

  Cookie保存在浏览器端
  如果不设定Expires(Cookie 的声明周期),则关闭浏览器,Cookie就失效

  Cookie的缺点:
    不能存储太多内容——大小限制
    机密信息不能存——保存在浏览器端,容易被作假
    不希望丢失的数据不能存——可以被清除
    不能跨浏览器使用——每个浏览器的Cookie是独立的

  Cookie的Path:  将Cookie设置在哪个路径下
    如果没有设置,当前路径和子文件夹都可以读取
  
    如果要整个域名都可以访问,则要设置为“/”(根目录),
    如果没有设置,浏览器默认设置,(原理:反编译HttpCookie可以看出)

    Cookie无法跨域名读写

    子域名之间默认无法操作,需要操作则设置Domain为父域名:
      www.rupeng.com 与 bbs.rupeng.com 需要设置Domain为".rupeng.com"
      Domain=域名
十九、Session(会话)

  保存在服务器端,保存和当前客户端相关的数据
  有自动销毁机制,一段时间内浏览器没有和服务器发生交互,就会销毁(为什么一段时间没有操作,账户会推出)

  修改Session生命周期的方法:
  在web.config的System.web节点下配置sessionState节点的timeout,
  单位是分钟,默认是20(只是建议值,在设定范围内有可能会被服务器以“压力”为理由清理掉)


  Cookie和Session的区别:
    Cookie是保存在浏览器的,Session是保存在服务器的
    通过Http报文发现:Cookie中放了一个SessionId,服务器中保存SessionId和数据的对应关系
    (键值对的关系,浏览器的Cookie有记录当前的Session的Id,服务器接收到到这个Id的时候会在服务器上查找到对应的Session,并按照Session中的数据进行操作)

    两者的作用的是一样的:
      都是保存和当前客户端相关的数据,都存在生命周期

  Guid算法:
    根据网卡mac地址、系统时间、Cpu时钟周期等算出来的值,
    这个值在同一台电脑上多次调用都不会重复,不同电脑同一时间也不重复
    可以保证“全球唯一”

    调用方法:
      Guid.NewGuid();

    在服务器中生成Guid(SessionId)到Cookie中,
    然后在服务器中建立一个以Guid为文件名的文件,文件内容为session的值


二十、进程外Session
  因为Session默认是保存在服务器内存中的(InProc),当服务器重启之后,Session就会销毁,就会造成用户反复登录的问题!

  解决方法:
    将Session保存在数据库中,服务器在重浏览器拿到SessionId后去服务器查找Session的内容
    相关要点:
      需要进行“序列化”和“反序列化”
    好处:
      解决服务器重启的问题,有利于“服务器集群”技术的实现

二十一、ASP.NET WEBFORM 最佳模式

  最佳模式:
    把aspx当成模板引擎,轻量使用WebForm控件

二十二、Aspx(新建-web窗体)

  在aspx中可以使用<%=表达式%>的方式在页面的相应位置输出表达式或者局部变量
  该表达式至少要用protected级别,表达式也可以是一个方法、属性或者字段

  注意:
    如果自动提示出不来,重新生成项目即可
    不要漏写“=”,通过反编译,“=”相当于Response.Write()
    可以直接写成<%Response.Write(表达式)%>
    页面中,除了<%%>的内容和runat=server的内容,其它都是原样输出

二十三、aspx和ashx的关系

  aspx就是一个特殊的一般处理程序(ashx,IHttpHandler):
    aspx对应的类是Page,它实现了IHtt

首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇今天瞎写的关于XML的一些。 下一篇ASP.NET MVC下Bundle的使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目