您的位置:首页 > 理论基础 > 计算机网络

WebForm总结Day01_一般处理程序HttpHandler

2015-09-25 18:53 411 查看
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值,

 对于其他属性值比如背景颜色、大小等也是无法传递的,因此对于这些值都要存在隐藏字段中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: