zoukankan      html  css  js  c++  java
  • Web窗体(WebForm)

    一.简介

    0. 页面的生命周期。

    1. WebForm后台页面类继承于Page类,Page类实现了IHttpHandler接口。

    2. 前台页面类继承于后台页面类。

    3. 先调用PageLoad方法,再调用Render方法生成html代码。

    . 加密安全

    互联网没有绝对的安全,登录框内输入用户名和密码,在请求报文里面都能看到,为避免这种情况发生,提高安全性能,可以用两种方式来处理:

    1. HTTPS协议(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

    2. 自己写安全插件,例如,支付宝安全控件。

    . Request的一些成员

    1. 防止图片盗链:可通过Request.UrlReffer,可通过此属性的值获取图片请求页面的地址,判断地址是否为本服务器的页面,如果不是,则判断为图片盗链处理,对于处理图片盗链,可以加水印或者替换成自己网站的宣传广告图片。

    2. Request.UserHostAddress获取访问者的IP地址,通过socket获得。

    . Response的一些成员

    1. Response.BufferOutPut,关闭缓冲区。

    2. Response.Flush,一次性把缓冲区的内容释放出来。

    3. Response.Clear,清空缓冲区。

    4. Response.ContentEncoding输出流的编码。

    5. Response.ContentType,输出流的内容类型,比如是,html(text/html)还是普通文本(text/plain),还是jpg图片(image/JPEG)。

    6. Response.OutputStream,输出流,在输出图片、Excel文件等非文本内容的时候用到它。

    7. Response.End,终止响应。End()之后的代码不会被继续执行,End方法里调用了Flush()方法。在终止一些非法请求的时候,比如盗链等可以用End()立即终止请求。

    . Server属性

    1. MapPath,取得文件的物理路径。

    2. Execute(服务器端包含)和Transfer,执行另一个页面的脚本。

           (1)Execute(服务器端包含)可以用来处理页面分块,填补重复出现的内容,比如页脚。

           (2)Transfer(服务器端跳转)后的代码都不再运行,内部也用到了Response.End。

    3. HtmlEncode和HtmlDecode,将文本编码成可以在浏览器中正确浏览的格式。

    4. UrlEncode和UrlDecode,URL编码和解码。

    . 状态保持方案

    无状态Http和有状态Http

    状态保持方案:

    客户端:

    (1)ViewState,隐藏域(存于表单里)。

    (2)Hidden Field,隐藏域。

    (3)Cookies,浏览器缓存。

    (4)ControlState,隐藏域。

    (5)Querystring,url。

    服务器端:

    (1)Session,单用户会话。

    (2)Application Object,多用户会话。

    (3)Caching,多用户会话。

    (4)DB,数据库。

    七.Cookie

    1. 两种存储方式:缓存Cookie(浏览器缓存,存在于内存)和硬盘Cookie(存在于硬盘),给Cookie加失效时间Cookie会存在于硬盘中,没有加失效时间则会存在于浏览器缓存。

    2. 当浏览器再次访问这个站点的时候,浏览器会自动发送Cookie给服务器。

    3. 同一个网站可以发送多个Cookie,当服务器向浏览器发送的响应报文中,包含多个Cookie的话,那么浏览器创建的Cookie文件中就用*分割多个Cookie内容。

    4. 可以指定Cookie发送的路径(当访问网站的某个文件夹的时候才会发送)。

    5. 浏览器不能发送Cookie的失效时间。

    6. Cookie的两个属性:

    (1)Cookie.Path(为指定文件夹生成Cookie)

    (2)Cookie.Domain(域/域名)

    7. Coolie的退出

           再写一个同名的Cookie,失效时间写成已失效则可以进行覆盖。

    8. cookie.value,取出cookie的值。

    八.Session

    1. Session池,键值对。

    2. Session也是context对象里的,Page类中封装,更方便访问。

    3. Session机制

    (1)SessionId用Cookie的方式发送到浏览器端。格式类似于,Set-Cookie:SessionId=101,Cookie以浏览器缓存方式存储,浏览器关闭SessionId则会消失。

    (2)Session信息存在Cookie中,所以本质上还是对Cookie的使用,如果浏览器禁用Cookie,Session则不发挥作用。

    (3)为了防止禁止Cookie导致Session失效,.NET可以在configur中配置(<sessionState cookieless="AutoDetect"></sessionState>),服务器可以通过URL将SessionId传给浏览器。

    (4)Session机制是.NET框架自己实现的,不是HTTP协议里面的东西。PHT,JAVA也都是自己实现Session机制的。

    4. Session的使用和销毁

           (1)Session.Abandon(),销毁服务器端的Session对象。(可以作用于“退出”功能的实现)

           (2)Session.Clear(),清空服务器端的Session对象里的键值对,Session对象并没有从Session池中销毁。

           (3)凡是要访问Session对象的页面,必须实现IRequiresSessionState接口,给该页面类贴上标签。

           (4)销毁之后,SessionId还存在于浏览器端的Cookie中,浏览器还是会发送SessionId给服务器端,只不过在服务器端中的Session被销毁了。

  • 相关阅读:
    149、你知道空类的大小是多少吗?
    hdoj--2682--Tree()
    hdoj--5053--the Sum of Cube(水)
    Codeforces--602A--Two Bases(水)
    poj--1637--Sightseeing tour(网络流,最大流判断混合图是否存在欧拉图)
    poj--1149--PIGS(最大流经典建图)
    poj--1459--Power Network(最大流,超级源超级汇)
    hdoj--3549--Flow Problem(最大流)
    poj--1237--Drainage Ditches(最大流)
    nyoj--38--布线问题(克鲁斯卡尔)
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4092930.html
Copyright © 2011-2022 走看看