




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
ASP.NET講師:鄒華棟內容:
掌握基于ASP.Net的Web開發,B/S結構原理、ASP.Net內部原理、狀態管理(Cookie、Session、ViewState等)、數據驗證、普通ASP.Net控件、母版、ListView/Repeater等數據綁定控件、AJAX、緩存等。目標:
以應用為目標,能夠使用ASP.Net開發常見的動態網站功能,并且和Dom、JQuery等客戶端技術結合進行網站的開發。注意:
原理先行,對于ASP.Net來說弄明白了原理才能學得更快。會講一些原理性的非常規用法代碼,用※標識,不要學這種寫法。Java班先講Servlet再講JSP,.Net也是先講HttpHandler再講WebForm(Aspx)。總體:(企業里直接使用的,相當重要!)課程安排(目標就是完成4套增刪改查)第一階段:一般處理程序、html與.NET內部對象
1、目標:從網絡的角度介紹ASP.NET的運行機制原理,并對ASP.NET中的幾個核心對象進行分析.
2、檢驗結果:熟練使用一般處理程序完成單表增刪改查第二階段:WebFormaspx
1、目標:WebForm的使用(aspx/aspx.cs),控件樹,頁面代碼生成。
2、檢驗結果:熟練使用WebForm結合html控件完成增刪改查(分頁)。第三階段:AJAX
1、目標:理解AJAX實現機制,結合webform和一般處理程序。
2、檢驗結果:熟練使用WebForm結合html與AJAX技術完成增刪改查(分頁)。第四階段:WebForm服務器控件1、目標:掌握服務器端控件的使用。
2、檢驗結果:熟練使用WebForm結合服務器控件完成增刪改查(分頁)。第五階段:ASP.NET高級進階
1、目標:掌握緩存/母板頁/錯誤頁/靜態頁/網站部署/頁面生命周期/HttpModule/Url重寫/服務器與瀏覽器語言1.瀏覽器與服務器語言
瀏覽器只負責解釋執行html+css+javascript代碼
服務器可執行服務器端語言:.NET,JAVA,...,分別由不同的運行環境執行代碼(Framework,JVM)2.靜態頁面(html)和動態頁面(aspx)的區別?看圖
比如說新聞列表頁面(郵箱列表)。index.aspx
瀏覽器:
html
javascript
css服務器:
?HTML(.html)
.jpg.css.js
.Net(.aspx.ashx)
JAVA(.jsp)
PHP(.php)注意:今天開始我們用微軟的服務器軟件,我們來了解下請求流程請求流程圖什么是ASP.Net一定要區別開:ASP.NET和ASP!!!ASP.Net是一種動態網頁技術,在服務器端運行.Net代碼,動態生成HTML,然后響應給瀏覽器(畫圖)為什么要有:可以使用JavaScript、Dom在瀏覽器端完成很多工作,但是有很多工作無法在瀏覽器端完成。ASP.Net:一般處理程序(ashx),WebForm(aspx)、MVC4(Model,View,Controler)一般處理程序(HttpHandler)一般處理程序(HttpHandler)
是一個實現System.Web.IHttpHandler接口的特殊類。
任何一個實現了IHttpHandler接口的類,是作為一個外部請求的目標程序的前提。(凡是沒有實現此接口的類,就不能被瀏覽器請求。)一個HttpHandler程序負責處理它所對應的URL的訪問請求,并接收客戶端發出的訪問請求信息(請求報文)和產生響應內容(響應報文)HttpHandler程序可以完成普通類程序所能完成的大多數任務:
1.獲取客戶端通過HTML的Form表單提交的數據和URL參數
2.創建對客戶端的響應消息內容
3.訪問服務器端的文件系統
4.連接數據庫并開發基于數據庫的應用
5.調用其他類第一個網站-在瀏覽器查看1.在要查看的文件上單擊右鍵,選擇在瀏覽器中查看。2.注意到屏幕右下角狀態欄中出現了一個小圖標:Cassini服務器
是vs內置的開發用的小型服務器程序我們待會在瀏覽器看到的頁面就是由它處理并返回的。第一個網站-訪問結果顯示:
終于降臨到這個神奇的國度了!FirstShow.ashxashx?—HttpHandler(一般處理程序)請求上下文對象
(此次請求處理要使用到的信息和對象都在里面)被訪問時被調用的處理方法服務器響應屬性(調用HttpResponse對象)是否重用(暫時用不著,不用理)重要接口服務器怎么接收和發送數據?服務器怎么接收?服務器怎么發送?如何接收和向發送客戶端數據?ASP.NET系統對象系統對象作用Page指向頁面自身的方式。作用域為頁面執行期。HttpRequest讀取客戶端在Web請求期間發送的值(http請求報文數據)HttpResponse封裝了頁面執行期返回到HTTP客戶端的輸出(http響應報文數據)HttpApplication作用于整個程序運行期的狀態對象Session會話期狀態保持對象,用于跟蹤單一用戶的會話。Cookie客戶端保持會話信息的一種方式Server提供對服務器上的方法和屬性的訪問在一般處理程序里,通過ProcessRequest方法的參數HttpContext
context調用一、瀏覽器提交數據方式?(例)get/post
1.表單:(數據藏在請求報文體中,格式:txtname=james&txtpwd=123)
<formaction=“login.ashx”method=“post”><inputtype=“text”name=“txtname”/>
<inputtype=“password”name=“txtpwd”/>
</form>
2.地址欄的URL參數,超鏈接的url,js指定的url(和表單的Get方式一樣):鍵值對
/login.ashx?txtname1=jordan&txtpwd1=123二、服務器如何獲取瀏覽器提交的數據?
1.獲取POST數據:context.Request.Form[“txtname”]2.獲取GET參數:context.Request.QueryString[“txtname1”]三、服務器如何向瀏覽器輸出數據?
context.Response.Write(“我是從服務器輸出到瀏覽器的數據!:)”);Request(HttpRequest)&Response(HttpResponse)注意:使用表單提交時必須為控件設置name瀏覽器請求屬性Request(HttpRequest)常用成員頁面間傳遞數據的幾種方式?(get/post:超鏈接,location,js的submit(),表單提交按鈕)如何獲取傳遞過來的數據呢?RequestForm屬性Params屬性QueryString屬性獲取通過GET方式傳來的數據瀏覽器:超鏈接,和表單Method=get獲取通過POST方式傳來的數據表單method=post客戶端提交的數據集合編寫登錄頁面,代碼演示各種傳值方式Response(HttpResponse)常用成員Response允許開發人員對當前頁面的輸出流進行操作ResponseRedirect方法Write方法直接在頁面上輸出內容重定向到另外一個頁面服務器發送命令讓瀏覽器跳轉Response.Redirect("http://www.itcast.cn");Response.Write("Hello,China!");End方法結束輸出HTTP請求詳解圖先來結合剛才的網頁程序了解一下HTTP請求過程HttpApplicationFactoryHttpApplication池HttpRuntime分析瀏覽器的請求報文,然后將請求報文的數據存入HttpContext的Request屬性中HttpApplication中負責創建和執行頁面瀏覽器請求服務器軟件IISIIS的可擴展程序,實現了IIS的接口這里還會調用HttpRunTime來響應請求,并且調用靜態方法創建HttpApplicationHttpApplication會先一次執行幾個事件(就看成是過濾器)最后創建請求頁面的對象,并轉成IHttpHandler接口對象調用執行瀏覽器發送請求到服務器來了請求被交給服務器軟件IIS處理,IIS處理不了,則根據后綴名交給擴展程序處理。.aspx.ashx->處理程序在.net中是如何由文件里的類變成IL執行的?請求編譯流程圖自己動手寫動態網站入門1.html<formaction="入門1.ashx">
<inputtype="text"name="username"/><inputtype="submit"/></form>新建一個【一般處理程序】入門1.ashx,ProcessRequest中寫context.Response.ContentType="text/html";stringusername=context.Request["username"];context.Response.Write(username+"<fontcolor='red'>你好</font>"+Guid.NewGuid());//根據當前電腦的硬件編號+系統時間微秒數每當用戶請求訪問ashx頁面的時候,ProcessRequest方法就會被調用,在這里通過訪問context.Request獲得訪問者的請求參數等。然后在ProcessRequest中通過context.Response向瀏覽器發回數據給瀏覽器。
ProcessRequest結束之時就是服務器為這個瀏覽者本次訪問服務完成之時瀏覽器向服務器端提交數據,被提交數據的表單(input、select、textarea等)放到form中,form中通過action屬性設定表單被提交給哪個頁面,為了在服務端取出表單項的值,需要在HTML中為表單元素設定name屬性,注意id是給JS操作Dom用的,name才是提交給服務器用的。在服務器端用context.Request["username"]來根據表單項的name來獲得提交的屬性值。通過context.Response.Write向瀏覽器輸出處理后的顯示HTML內容。注意當我們點擊【提交】按鈕以后是瀏覽器將用戶填寫的文本框等控件中的值“提取”出來發送給服務器,而不是服務器來讀取用戶填寫的這個頁面。哪些標簽的哪些值會被提交給服務器呢?將用戶填寫的內容提交到服務器有如下幾個條件:只能為input、textarea、select三種類型的標簽。只有input(文本框、CheckBox等)用戶才可能填寫值,<label>、<p>、<font>等標簽僅供顯示用,沒有提交到服務器的必要。只有value屬性的值才會提交給服務器。以input標簽為例,input標簽有title、type、disabled等屬性,但是這些屬性都是供顯示用的,用戶并不能修改,只有value屬性才是用戶輸入的屬性,因此只有value屬性的值才會被提交到服務器。標簽必須設定name屬性。學習Dom的時候我們知道如果要通過JavaScript操作標簽,必須為標簽設定Id。如果要將標簽的value屬性值提交到服務器,則必須為標簽設定name屬性,提交到服務器的時候將會以“name=value”的鍵值對的方式提交給服務器,多個鍵值對之間用&分割。除了單選按鈕等少數標簽之外,大部分標簽的name的值不能重復。name是給服務器用的,id是給Dom用的。對于RadioButton,同name的為一組,選中的RadioButton的value被提交到服務器。如果設置了控件的disabled屬性的話,瀏覽器也不會提交該控件的值。放到form標簽內。只有放到form標簽內的標簽才可能會被提交到服務器,form之外的input等標簽被忽略。“返回”提交頁面改進版為了請求、返回的內容一樣,將頁面源碼放到字符串常量中,模板中有一些待填值的占位符,第一次進入頁面的時候就直接訪問ashx,讀取htm模板,將待填值占位符設置為空,然后輸出到瀏覽器。為了區分是第一次直接進入頁面還是點擊提交以后重新進入ashx,在form中增加一個隱藏字段:<inputtype="hidden"name="ispostback"value="true"/>,如果能夠從Request中讀取到ispostback=true就說明是點擊提交以后重新進入ashx,否則就是第一次進入ashx。ispostback就是一個標志位。實現思路:在ProcessRequest中首先從Request中讀取ispostback,如果讀取到true,說明是提交進入的,就加載模板,并且進行占位符用計算后的值替換,否則就將模板中的占位符清空直接輸出給瀏覽者。占位符找一個特殊的不會和其他字符串沖突的就行。代碼見備注※剛進入hello2.ashx的時候是直接向瀏覽器輸出內容,用戶在輸出的內容中填入數值,再點擊提交,服務器就知道“提交回來了”(PostBack)Http是請求、響應的模型,服務器不會來讀取瀏覽器的網頁,能夠得到的就是客戶端網頁提交過來的數據。如果訪問Hello2.ashx,多次點擊刷新(重復上一次操作),都是“直接進入”如果提交表單,再多次點擊刷新,都是“提交進入”疑?討論:文本框上次輸入的值在提交表單后又顯示出來并不是理所當然的,是開發人員幫著讀取提交上來的值然后渲染上去的。Get與Post深入還可以設定<form>的method屬性指定表單提交方式,get(默認值)是通過URL傳遞表單值,post傳遞的表單值是隱藏到http報文體中,url中看到不。get和post的區別(常考):get是通過url傳遞表單值,post通過url看不到表單域的值;get傳遞的數據量是有限的,如果要傳遞大數據量不能用get,比如type=“file”上傳文章、type=“password”傳遞密碼或者<textarea>發表大段文章,post則沒有這個限制;post會有瀏覽器提示重新提交表單的問題,get則沒有(加分的回答)。對于Post的表單重新敲地址欄再刷新就不會提示重新提交了,因為重新敲地址就沒有偷偷提交的數據了。Post方式的正確的地址很難直接發給別人。Get方式URL數據格式。服務端文件名后跟著“?”,由于客戶端可能向服務器端提交多個鍵值對,鍵值對之間用“&”進行分割,如果URL中有漢字、特殊符號等,則需要對URL進行編碼。表單域只有設定了name的才會被提交給服務器(用get方式看的清楚)。如果給submit按鈕設定name,那么按鈕的value也會被提交給服務器【刷新】。對比查看post/get報文數據數值自增實現input的自增:點擊按鈕input中的值自動增加,代碼見備注。點擊刷新就一直是值不變,只有點擊提交才會變,分析原理。用開發人員工具篡改文本框的值自增就從新的值開始了。使用aspx重寫input的自增。練習:用ashx實現加法計算器。常見錯誤:type=submit才會自動提交表單,type=button不會自動提交。從ashx啟動和從html啟動的區別練習:實現div內文本的自增。因為服務器不記得上次給瀏覽器的值是什么,而且不像input那樣會將上次的值重新提交回來,因此瀏覽器需要用一個隱藏字段將上一次的值保存下來。代碼見備注http無狀態,每次請求都是由一個新的頁面對象來處理請求。如果把value搞成static可以實現,但是兩個用戶訪問的話就會串了。而用Input方式的話兩個人各自點各自的,不會互相影響。非表單元素無法將客戶端的元素值傳遞給服務器端,即使是表單元素也只能傳遞value值,對于其他屬性值比如背景顏色、大小等也是無法傳遞的,因此對于這些值都要存在隱藏字段中。增刪改查(三層)1.列表2.刪除3.新增4.修改HttpHandler實現圖片上傳一、瀏覽器端 1.表單元素使用文件選擇框<inputtype="file"name="t"/>控件。 2.表單設置enctype="multipart/form-data",本質上就是設置瀏覽器提交表單的數據時,使用隨機分隔符來分割不同控件的數據,而且數據的組織形式由name=value換成了數據頭和數據體的方式。二、服務器端
1.服務器接收客戶端上傳的文件使用Request.Files屬性。 2.使用HttpPostedFile的SaveAs方法將圖片保存在服務器。HttpHandler實現動態圖片輸出HttpHandler是對請求的響應,可以輸出普通的html內容,也可以輸出圖片、也可以輸出一個文件(下載)輸出一幅動態創建的圖片案例1:圖片中顯示訪問者信息案例2:填入朋友的姓名就能生成惡搞的圖片鏈接案例3:繪制圖片水印(使用全局一般處理程序)練習:制作簡單驗證碼圖片網上看到的注冊、登錄時候的驗證碼也是動態生成的圖片、55.la也是這樣實現的原理。HttpHandler實現文件下載如果HttpHandler輸出的是html/txt/jpeg等類型的信息,那么瀏覽器會直接顯示,如果希望彈出保存對話框,則需要添加HeaderstringencodeFileName=HttpUtility.UrlEncode(“生活大爆炸117.avi”);
Response.AddHeader(“Content-Disposition”,string.Format(“attachment;filename=\”{0}\“”,encodeFileName));其中filename后為編碼后的文件名。filename段為建議的保存文件名。練習:使用Handler為學員列表添加“下載學員附件”功能ASP.NET第一階段的第一部分結束ASP.NET第一部分主要內容:主要內容:
1.瀏覽器/服務器交互原理(請求/響應的過程)。
2.ASP.NET運行機制:瀏覽器->服務器電腦->IIS->IIS擴展程序(aspnet_isapi.dll)->FrameWork->HttpRuntime->HttpContext->HttpApplicationFactory->HttpApplication->請求管道(事件委托19個)->IHttpHandler(在11-12事件中間執行了被請求的處理程序(aspx,ashx))的處理流程。
3.Web網站和Web應用程序的區別(開始時和發布后)
4.【一般處理程序】的使用(增刪改查)和上傳文件/動態輸出文件數據
5.上下文對象(HttpContext)的重要屬性: Response(負責向客戶端輸出),Request(包含所有客戶端提交的數據)
Application,Cookies,
SessionHttpHandler實現文件下載
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥品計劃采購管理制度
- 藥品食品倉庫管理制度
- 藥店醫保統籌管理制度
- 藥店消防培訓管理制度
- 菌類種植基地管理制度
- 設備事故考核管理制度
- 設備售后出差管理制度
- 設備工具領取管理制度
- 設備檢修費用管理制度
- 設備維護成本管理制度
- 2025春季學期國開電大本科《管理英語3》一平臺機考真題及答案(第十套)
- 2025年社區工作者考試題目及答案
- 定額〔2025〕1號文-關于發布2018版電力建設工程概預算定額2024年度價格水平調整的通知
- 《云南省建筑工程資料管理規程應用指南)(上下冊)
- 數列求和中常見放縮方法和技巧(含答案)
- 寶興縣中藥材生產現狀及發展思路
- 胸外科圍手術期的氣道管理.ppt
- 小兒霧化吸入課件.ppt
- 國際經濟法案例分析(匯總)
- 鎖骨骨折幻燈片
- 高填方、深挖路塹邊坡和軟基監測方案
評論
0/150
提交評論