3.Get和Post的区别:
get:在html的表单里,<form action ="aa.aspx" method ="GET">就是get方式提交表单,并且在IE浏览器里面本来默认的提交方式就是get方式,get提交时会将所有的参数传到url里面,也就是说他会很直接的就把那些要传的url上,而在服务器端还得解析url,这样就有了一些限制了噻,在url里传的字节数的大小是有限制的,也就3.4千个字符长度吧,这个跟浏览器有关,get传值时,服务器端文件名后跟着“?”,由于服务器端递提交的多个键值对,键值对之间用“&”进行分割。如果url中有汉字,特殊字符,则还需要对url进行编码,这样传递的弊端也就有了,用户可以通过伪造参数来欺骗服务器端哈,这样服务器检测到了该参数,就会认为是合法的提交啦哈
Post:在method里面使用该方法时,method方法就是将提交的数据隐藏到Http报文中,这里传递的参数在url中看不到,这个在Http协议上是没有大小限制的,如果有限制的话,就是浏览器端的限制大小了,呵呵,如果要传递大的文章,最好还是用Post方法吧
4.Http的理解:
Http是属于无状态的协议,不会记得上次和网页“发生了什么”,服务器也不记得上次给浏览器了什么,浏览器需要记住这些值,用个隐藏字段就行啦,如<input name ="memory" value ="before"> 可以是ViewState
为了增加客户端信息是在确定的输入页输入的,我们特地做了一个隐藏字段作为post字段接受的标志验证,这里真正储存真的信息
,但是保存隐藏字段会造成网速流量过大,降低访问速度,把机密数据放到表单会有数据欺骗等安全问题
5.用ViewStateDecode2就是一款HTML代码解密软件
6.使用Cookie()自动填写用户名和密码(固定失效时间)
ASP.NET中级:
Request相应对象:
1.
2.System.Threading.Thread.Sleep(500); //休眠0.5s再执行
3.NavigateUrl="~/aa.aspx" ; //相对于应用的根路径,就是比相对于上级的目录好用
4.Request.UrlReferrer ==null;就是获得网站来源,可以伪造,迅雷就是这样的,在哪个网站的就用哪个网站的
5.Request.RowUrl 获得原始请求的Url
6.Request.UserHostAddress获得访问者的IP地址,可以做IP屏蔽,就是比如密码输入次数过多,要屏蔽当天的访问等
7.Request.PhysicalPath获取当前请求的物理路径 如D:\\aaa\a.aspx
8.Request.PhysicalApplicationPath获得当前应用的物理路径,就是该网站在磁盘上的路径 如D://website1
9.Request.MapPath(virtulPath) 将虚拟路径转换为磁盘上的物理路径
10。Request.AppRelativeCurrentExecutionFilePath获得执行当前请求的文件将对于应用磁盘根目录的虚拟路径,以~开头
11.Request.UserLanguages获得访问者的语言,可以实现不同的访问者给与不同的语言
12.Request.Cookies获得浏览器端发过来的Cookie,可以在里面取Cookie的值
Response输出对象
1.context.Response.Flash(); //强制将程序池里的未满的数据立即发给服务器
2.Response.Clear()清空缓存区
3.Response.ContentEncoding输出流的编码
4.Response.ContentType输出流的内容类型,比如是html就是text/html,普通文本text/plain还是jepg图片image/jepg
5.Response.Cookies就是向浏览器返回Cookie,可以通过它设置Cookie
6.Response.OutputStream输出流,在输出图片、Excal等非文本文件的内容的时候要使用它
7.Response.End()终止响应,将该代码之前的数据发给浏览器,将之后的代码不发给浏览器
8.Response.Redriect(url)重定向到新的网站
9.Response.SetCookie(HttpCookie cookie)向输出流中更新写到浏览器中的Cookie,比如不存在的就增加
10.Response.Write()向浏览器中输出内容
11.Response.WriteFile(filePath)向浏览器中输出文件,如 Response.WriteFile("C://boot.ini");
中间的对象:
String fullpath = HttpContext.Current.Server.MapPath("a.jepg");
System.Draw.Bitmap bitmap = System.Drawing.Bitmap(fullpath);
System.Drawing.Grapics g = System.Drawing.Graphics.FromImage(bitmap);
context.Request.UrlReferrer.Hosts =="localhost";
g.DrawString("呵呵",new System.Drawing.Font("宋体",30),System.Drawing.Brushes.Red,0,0);
//在g上画东西,后两个参数是输出左边,相对于左上角的
g.Clear(System.Drawing.Color.Write);
bitmap.Save(context.Response.OutputStream,System.Draw.Imaging.ImageFormat.Jpeg); //保存到输出流中
Server对象(是context的一个属性,是HttpServerUtility类的一个对象):
1.Server.HttpDecode(), Server.HtmlEncode(), //处理页面的编码
Server.UrlEncode是在为Url连接编码,防止xss注入,就是将< 代替< ,成为< script>就没有了JS的代码被浏览器执行
3.Server.Transfer(path)内部重定向请求,不像Redrict那样通知浏览器,是服务器内部的信息处理,这样在浏览器端不会有地址刷新,属于内部请求
HttpHandler(一般处理程序)
是对请求的响应,即可以输出普通的html内容,也可以输出图片(验证码),也可以输出一个文件(下载),动态生成图片(http://55.la)
可以实现点击下载,就是在报文头里加代码,新建HttpHandeler,然后再context.Response.AddHeader("Content-Disposition",string.Format("attchment:filename=\"{0}\"",ecodeFileName));
NPOI动态生成Excal表单,并能提示下载,去网上百度,ASP.NET有自己的方法
数据库要放在App_Data里面,asp.netd的IIS会自动禁止下载目录下的文件
非页面的C#代码放在App_Code里面,简单的读取数据库用DataReader的方式就行
数据访问层的代码放在DAL文件夹中,DataSet就是数据集的,所以。。。新建数据集,在旁边把数据库拖过来就行啦,然后可以在数据集上右键Query就是添加查询(选择使用SQL,不选使用存储过程),然后下一步就是填充整个数据图,一般不用,也就是不把他作为全局方法,然后方法名就自己起就OK啦
ASP.NET学习笔记(二)-Get,Post,Request区别,布布扣,bubuko.com
ASP.NET学习笔记(二)-Get,Post,Request区别