ASP.NET学习笔记(二)-Get,Post,Request区别

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区别,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。