笔记-ASP.NET-NOTE

本文围绕IIS、Http和Get&Post展开。介绍了IIS的访问流程、应用程序池作用等;阐述了Http的请求响应模式、无状态性等特点;对比了Get和Post请求方式的区别及使用场景。还涉及上传文件、验证码、aspx开发、状态保持、AJAX请求等信息技术相关内容。

课程地址:https://www.bilibili.com/video/av14503912 (P298)

IIS

1,浏览器首先访问的是服务器的IIS,然后在访问网站程序
2,应用程序池的作用:将不同应用程序之间隔离开,不至于以这个网站挂了,其他的都挂了
3,物理路径对应着网站程序

Http

1,超文本传输协议:

1 请求响应模式:请求报文,响应报文
2 无状态
3 应用层的协议:基于TCP连接
4 Chrome可以分析每一个请求和响应的报文格式,包括:请求头,请求体,响应头,响应体

(1) Http在请求关闭后,一般不保持长连接状态:
缺点:不保持连接会降低处理速度(因为建立连接速度很慢)
优点:保持连接会占用服务器的资源,会降低浏览器的请求书数,而不保持连接服务器可以处理更多的请求

图:请求报文的格式:
在这里插入图片描述

图:响应码
在这里插入图片描述

图:IIS处理过程
在这里插入图片描述

Get&Post

1,表单以Get方式Submit则数据会在地址栏中显示;若以post请求则数据全部都放在请求报文的请求体中;在表单submit时,建议使用post,安全
2,浏览器中输入地址是Get,超链接是Get
3,只有将表单中的method改为post,才会出现post的请求方式

图:Get和Post两者的区别

在这里插入图片描述
在这里插入图片描述
1,Http请求的无状态性:第二次请求无法获取第一次的请求的处理结果(后续请求无法获得之前的请求计算的结果)(并没有get点)
2,context.Request.Form["textName"]:获取相应的模板中的值
3,context.Request.Write(xx);返回给浏览器渲染的东西
4,表单在submit时,只能提交表单元素的value属性,div则不可以submit,可以采用属性进行间接处理


~p309
1 brose访问html时,直接将html返回给brose渲染执行
2 brose访问.ashx时,会执行ashx后,找到html路径,并替换占位符,返回给brose渲染执行
3 在传递数据时,需要借助hidden属性来接受数据。
场景:A表格信息页面中点击某一行的信息中的“修改”功能,跳转至“修改”页面B,在“修改”页面修改后进行保存。
A中点击添加,在访问B时传递某信息行的ID,B中设置了hideen来接受,不把id显示出来;B修改完之后保存,再把B中的表单信息(包含隐藏的ID值)传给xxx.ashx进行数据库保存等后续操作。
4 当我们需要跳转一个页面时,比如“添加”页面,页面的呈现不需要从数据处理后替换模板占位符,则直接访问.html就行,不需要访问.ashx


重定向,请求的发起触发

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


上传文件
上传文件属于文件流,和数据流要区别对待
在这里插入图片描述

在这里插入图片描述

以上传图片文件为例:

在这里插入图片描述

上面针对图片文在ashx中的处理,有些处理不当的地方,下面进行补充
在这里插入图片描述


GDI+
在这里插入图片描述


图片添加水印:

服务器接受图片,将图片保存至文件夹,然后将图片路径地址保存在数据库某个字段下

context.Request.MapPath(path):将相对路径转换成绝对路径

在这里插入图片描述


验证码和缩略图

图变缩略:

请不要通过 height 和 width 属性来缩放图像。
如果通过 height 和 width 属性来缩小图像,那么用户就必须下载大容量的图像(即使图像在页面上看上去很小)。
http://www.w3school.com.cn/tags/att_img_height-width.asp

正确的做法是,在网页上使用图像之前,应该通过软件把图像处理为合适的尺寸。

简单的办法:将new BitMap(X,X)的参数减小;
但上述方法会使图片变形,若需要更好处理图片需要进行专业处理,下面是网上处理图片的类,可供参考
(https://www.cnblogs.com/mynameltg/p/4043501.html)

验证码生成:
验证码作用:增加网站暴力破解的难度
同样也是有相关的dll或者类文件专业的处理验证码问题
在这里插入图片描述


aspx:

  • html+ashx(一般处理程序) :ashx替换html中的占位符,将html返回给browser,开发效率比较低;

  • 在复杂页面中开发中选择aspx(html+c#)+aspx.cs(c#)(类似于wpf)

  • 当向服务器发送请求不需要返回html时,则直接访问ashx就ok,不需要aspx;

  • aspx和aspx.cs会单独生成两个类

  • aspx类 继承自 aspx.cs类:aspx中使用<%= xxx %>使用从继承过来的xxx属性

  • 当请求到来后,框架会先执行aspx.cs中的Page_Load(),框架会帮助将html中的xxx属性都填好,最终将aspx中的html文件返回给浏览器处理

  • aspx中有服务端控件(<asp:Button runat = “serve”>),在返回给浏览器时会转换成浏览器可以处理的标签;

  • 当使用服务端表单控件,框架会添加一些隐藏域(__VIEWSTATE),隐藏域会影响传输效率,影响浏览器渲染效率,则虽然提高了我们的开发效率,也降低了运行效率;但是这个服务端表单控件具有状态保持功能;(服务端控件一般不用)

  • 利用表单内的值是否为null来判断是以get还是post请求进入aspx.cs,从而进行区分处理;如果使用服务端控件,则可以使用IsPostBack这个属性进行post、get区分


Request & Response

public HttpRequest Request { get; }
public HttpResponse Response { get; }
public HttpServerUtility Server { get; }
Response.Write(Request.Url.ToString());//当前Url
Response.Write(Request.UrlReferrer.ToString());//请求来源的Url
Response.Write(Request.UserHostAddress);//请求来源IP
//缓冲区 
Response.Buffer = true;//true 整体代码运行后,返回给browser,否则每执行Response会返回
Response.Flush();//将缓冲区立即返回给browser
<iframe src = "child.aspx" ></iframe>//iframe不利于 SEO;

ViewState状态保持
在这里插入图片描述

cookie

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


Session

在这里插入图片描述

  • Cookie信息存于浏览器端,可存于内存中,可存于硬盘中;Session存于服务器内存中
  • Cookie一般用来设计自动登录;Session处理图片验证码,判断用户是否已经登录

asp.net 入口源码分析
HttpContext,HttpReponse,HttpRequest
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


AJAX
http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp
在没有ajax时,向服务器发送数据时只能通过表单submit,超链接两种方式,并且是同步的,服务器的数据返回会阻塞主线程。

最原始的ajax请求代码:

AJAX-GET请求:在这里插入图片描述

AJAX-POST请求 :
在这里插入图片描述
服务端接受:
在这里插入图片描述

jquery库实现ajax请求(对XMLHttpRequest进行封装):

jquery提供多种ajax实现的api:

在这里插入图片描述

在这里插入图片描述
ajax 实现用户名检查
在这里插入图片描述

在这里插入图片描述

  • 在CURD后,例如在进行add操作后,应该重新在数据库拿一遍数据,而不是在客户端直接加一列的信息。防止在add过程中,数据库被别人修改;

  • 服务端控件就是对Html进行了封装,了解就行;

  • 母版页把占位符空出来,aspx进行填占位符;

  • 缓存:为了缓解数据库的压力,对经常访问&不经常改动的数据进行设置缓存Cache,缓存位于服务端内存中;若缓存较大可以设计分布式缓存。

  • 错误页面需要在web.config中进行配置,不然会将异常信息包括:后端的逻辑逻辑代码暴露给用户

  • 网站发布之前需要选择Release版本。


HttpModule
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


Global :放在网站文件根目录

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值