WebForm总结Day01_一般处理程序HttpHandler

本文介绍了ASP.NET的基础知识,包括B/S结构原理、ASP.NET内部机制、状态管理、数据验证等内容,并详细阐述了一般处理程序(HttpHandler)、WebForm的工作流程及如何在服务器端接收浏览器数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. ASP.NET内容
 Web开发,B/S结构原理,ASP.NET内部原理,Nvelocity模板引擎,
 状态管理(Cookie,Session,ViewState等),数据验证,普通ASP.NET控件,母板,
 ListView/Repeater等数据绑定控件、AJAX、缓存等
 
 内容:
 part1:一般处理程序
 part2:ajax
 part3:webform和服务器控件
 part4:高级内容 多线程 socket web服务器软件
 
 Java班先讲Servlet再讲JSP,.NET也是先讲HttpHandler再讲WebForm(Aspx)
 
2. ASP.NET是一种动态网页技术,在服务器端运行.NET代码,动态生成HTML,然后响应给浏览器
 
 可以使用JavaScript,Dom在浏览器端完成很多工作,但有很多工作无法在浏览器端完成
 
 ASP.NET: 一般处理程序(ashx), WebForm(aspx), MVC(Model, View, Controller)
 
一般处理程序HttpHandler(ashx):实现了IHttpHandler接口的特殊类
任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提
(凡是没有实现此接口的类,就不能被浏览器请求)它由支持ASP.NET的服务器调用和启动运行。

一个HttpHandler程序负责它所对应的一个或一组URL地址的访问请求,接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)
 
HttpContext --> http上下文  上文(Request)  下文(Response)  -->请求和响应
 
3. Cassini服务器是vs内置的开发用的小型服务器程序,我们在浏览器看到的页面就是由它处理并返回的

4. 服务器怎么接收浏览器发给我们的数据?
get 

  1)(在地址栏url中传数据)格式 ?键=值&键=值 
  2) 表单Method=get
 服务器端 string value = context.Request.QueryString["name"] 获得值

post(隐藏内容)
  使用表单提交时必须为控件设置name
  服务器端 string value = context.Request.Form["name"] 

  
 页面间传递数据的几种方式:
 get/post, <a href="#">超链接</a>,location,js的submit(),表单Form的提交按钮
  
5. 相对路径:相对于浏览器请求的那个页面为根目录
 在服务器端 "~/"表明是根目录  "../"表明返回上一级
 在浏览器端 是不能使用"~/"的


6. Response输出给浏览器
 1)Write 直接在页面上输出内容
 2)Redirect 服务器发送状态码302,浏览器接收到后,从location部分获得要跳转的页面地址,重定向
       Redirect在整个过程中使用的都是get请求
 3)End

 

7. 有一种情况是post请求:

 表单 method = "post" 并且点submit按钮
 其他 如直接在地址栏输入地址,点击超链接等都是get请求。浏览器直接访问的请求,默认提交方式是GET方式
 
8. 每当用户请求访问ashx页面的时候,ProcessRequest方法就会被调用
 通过访问context.Request获得访问者的请求参数等
 然后通过context.Response向浏览器发回数据给浏览器
 
 浏览器向服务器端提交数据,被提交数据的表单(input、select、textarea等)放到form中,
 form中通过action属性设定表单被提交给哪个页面,
 为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,
 注意id是给JS操作Dom用的,name才是提交给服务器用的。
 在服务器端用context.Request["username"]来根据表单项的name来获得提交的属性值。
 通过context.Response.Write向浏览器输出处理后的显示HTML内容
 
9. 实现: 请求和返回的页面内容一样
 将页面源码放到字符串常量中,模板中有一些待填值的占位符,
 第一次进入页面的时候就直接访问ashx,读取htm模板,将待填值占位符设置为空,然后输出到浏览器。
 
 区分是第一次直接进入页面还是点击提交以后重新进入ashx
 两种方法
 一是采用隐藏域判断页面是否第一次加载
 二是使用Request.HttpMethod
 
 如果访问Hello2.ashx,多次点击刷新(重复上一次操作),都是“直接进入”
 如果提交表单,再多次点击刷新,都是“提交进入”
 
 文本框上次输入的值在提交表单后又显示出来并不是理所当然的,
 是开发人员帮着读取提交上来的值然后渲染上去的。
 
10. Get和Post区别
 1)get是通过URL传递表单值,post传递的表单值是隐藏到http报文体中,url看不到
 2)get传递的数据量是有限的,传递大数据(如发表文章等)用post
 3)post会有浏览器提示重新提交表单的问题,get则没有。
       如在支付过程中,如果在提交表单后刷新页面,相当于再次执行一次表单,即再次购买
       这是个严重的问题。所以一般在购买行为发生之后会对返回页面进行重定向
 4)Get方式URL数据格式。服务端文件名后跟着“?”,
       由于客户端可能向服务器端提交多个键值对,键值对之间用“&”进行分割,
       如果URL中有汉字、特殊符号等,则需要对URL进行编码
   
11. HTTP请求的无状态
 服务器不记得上次给浏览器的值是什么。当再次请求时已经不知道上次请求的结果了
 所以如果想让服务器记得,需要将这个值在客户端记录下来,当再次请求时传给服务器才行
 因此浏览器需要用一个隐藏字段将上一次的值保存下来
 
 非表单元素无法将客户端的元素值传递给服务器端,即使是表单元素也只能传递value值,
 对于其他属性值比如背景颜色、大小等也是无法传递的,因此对于这些值都要存在隐藏字段中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值