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值,
对于其他属性值比如背景颜色、大小等也是无法传递的,因此对于这些值都要存在隐藏字段中。