3,网站WebSite和WebApplication的区别。
1) WebApplication编译运行后,你修改后台C#代码,你刷新网页,内容不会改变。重新编译晕,内容会改变。
网站WebSite,你修改后台C#代码,刷新页面,内容会改变。不用关闭启动浏览器。
2)WebSite没有namespace,WebApplication有namespace 。
因此WebSite用来学习,WebApplication用来开始实际项目比较好。
4,基于ashx方式的ASP.Net开发1
.aspx开发,微软给你封装了很多函数,因此你可以很方便开发。.ashx开始,是最原始的开发,最基础的web开发。仅仅根据http协议进行开发。
输入url,以及在网页提交表单,都是浏览器向服务器进行请求Request。服务器处理完Request,要把处理结果返回给浏览器,这个叫响应Response。
别看.aspx你输入什么,他处理你的输入后,除了输出处理结果,输入前在的东西也输出。他是把这些东西记录下来又重新输出一遍。如同:
写好的一个HTML页面,物理读进来,对用户输入进行处理,把处理结果输出到HTML可替换的自定义标志部位,然后和HTML其他不变的地方输出。
原来Response.Write("a"),再Response.Write("b"),输出ab,后一个Response.Write不会覆盖前面一个。
5,ASP.Net的IsPostBack揭秘
为了请求,返回的内容一样,将页面保存为一个html模板文本,模板中有一些待填值的占位符,第一次进入页面的时候就直接访问ashx,读取html模板,将待填值占位符设置为空,然后输出到浏览器。
为了区分是第一次直接进入页面还是点击提交以后进入页面,在form中增加一个隐藏字段:<input type="hidden" name="ispostback" value="true" />,如果能够从Request中读取到ispostback=true就说明是点击提交以后重新进入ashx,否则就是第一次进入ashx。ispostback就是一个标志位。
6,Get和Post的区别
可以设定表单form的提交方式method,get是url传递,post是隐藏在http报文传递。get传递的数量有限,post无限,所以可以用post来传递文件。
使用post传递,点浏览器刷新会有重新提交的提示。刷新,就是重复上一次提交的内容。
get传递的参数在服务端文件名后面的?标志,可以提交多个键值对,之间用&进行风格,如果url中有汉字或其它符号,则要进行url编码。
表单域只有设定了name的才会被提交给服务器。
7,8,9,11,12,13,14
input自增和div自增。input text本身通过表单递交数据到服务器,服务器进行递增处理,然后返回给客户端input text。
div自增,首先用户请求页面,
input hidden value的值是一个占位符。服务器依据ispostback字段(其实,也可以根据submit的value值)判断是第一次进入页面,还是回发进入页面。如果是第一次进入页面,就把input hidden value初始化为0。如果是回发,也就是点击submit提交表单,就将input hidden value递增,然后返回给客户端。
也就是说,input text不用input hidden就能自增,而div要用input hidden才能自增。这个inpt hidden就是ASP.NET的ViewState。
使用ViewStateDecoder2可以对ASP.NET页面的ViewState进行解码。
15 ASP.NET中使用Cookie
你的每次请求都是全新的请求,这样会限制很多交互功能。因此出现了cookie,类似于人的病历本。cookie的键值数据key/value,对于复杂数据,以json格式存储;作用域,不同的域名,对应不同的作用域,a.b.com和c.b.com是不同的域,优化,对于同张网页上的图片,css,js脚本,最好放在不同的域下,这样会使请求大小少很多;过期时间,用来删除cookie。
对于cookie更多学习,可以参考http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html
16ASP.NET Session原理
首先,服务器有一个全局的字典变量,用来存储key和value,value的类型是object。针对每个访问者生成一个GUID,并写入访问者的Cookie。访问者第二次访问,依据他的GUID,进行特别处理。
因为全局,所以占内存。可以存储复杂的数据,以及比较私密的数据。
17,18,19,20验证码案例说明
用户第一次请求页面,服务器用代码生成带有四个数字的图片,这四个数字又写入Session中。 用户输入四个数字,提交到服务器与Session的四个数字进行比较,相同的话,进行相关处理;不相同的话,也进行相关处理。
验证码用来防止用户暴力破解。
21,22HTTP协议
连接,请求,响应。
浏览器发送连接到服务器,连接是浏览器和服务器数据传输的通道,一般请求完毕,连接就关闭。
请求包括,请求方式get或者post,和http协议;数据的压缩方法,gzip或deflate;浏览器支持的语言,比如中文或英文;是否一直保持连接;Cookie;浏览器的版本信息;
响应,是服务器发送给浏览器。包括响应码,200 ok,403 禁止访问,404 页面找不到 ,503 访问人数太多;服务器类型;返回的数据类型,图片,css,js或者二进制文件,html;数据内容的长度;
xss漏洞
没有对用户提交的数据,进行验证,转换为安全数据造成。使用户可以执行他自己编写的脚本。